我想将连续数字分配给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 :(得分:1)
我们需要seq_along
代替1:nrow
作为&#39; cyl&#39;是一列而不是data.frame
。
ddply(.data=ex1, .variables=c("cyl"), transform, brx_j = seq_along(cyl))
和dplyr
,row_number()
功能可以在按&#39; cyl&#39;分组后获取序列。
library(dplyr)
ex1 %>%
group_by(cyl) %>%
mutate(brx_j = row_number())
答案 1 :(得分:1)
这也可以(基础R):
ex1$brx_j <- ave(1:nrow(ex1), ex1$cyl, FUN=seq_along)
ex1[order(ex1$cyl),]