2016-11-28 81 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),]