2016-11-28 84 views
1

我想爲我的data.frame的段指定連續的數字。我試着像這樣:data.frame段的連續編號

library(plyr) 
ex1 <- mtcars 
ehh <- ddply(.data=ex1, .variables=c("cyl"), transform, brx_j = c(1:nrow(cyl))) 

但它在data.frame「錯誤(名單(MPG = C(22.8,24.4,22.8,32.4,30.4,33.9,21.5,: 參數意味着,不同的行數:?11,0"

什麼是我的錯在這裏

+0

我想你需要'seq_along(CYL)',如果你正在使用'dplyr',然後'EX1%>%GROUP_BY(CYL )%> mutate(brx_j = row_number())' – akrun

+1

用'length'替換'nrow' - 'mtcars $ cyl'是一個向量,不是矩陣 – Miff

+0

甜!你們是最棒的! –

回答

1

我們需要seq_along代替1:nrow爲 '共青團' 是一列,而不是一個data.frame

ddply(.data=ex1, .variables=c("cyl"), transform, brx_j = seq_along(cyl)) 
。 210

dplyr,有row_number()函數來獲得'cyl'分組後的序列。

library(dplyr) 
ex1 %>% 
    group_by(cyl) %>% 
    mutate(brx_j = row_number()) 
1

這也將工作(基礎R):

ex1$brx_j <- ave(1:nrow(ex1), ex1$cyl, FUN=seq_along) 
ex1[order(ex1$cyl),]