data.frame 段的连续编号

Consecutive numbering of data.frame segments

我想为 data.frame 的片段分配连续的数字。我这样试过:

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

但这是 data.frame(list(mpg = c(22.8, 24.4, 22.8, 32.4, 30.4, 33.9, 21.5, : 参数表示不同的行数:11、0"。

我这里有什么错误?

我们需要 seq_along 而不是 1:nrow,因为 'cyl' 是单列而不是 data.frame

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

dplyr 一起,有 row_number() 函数来获取按 'cyl' 分组后的序列。

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

这也适用(基础 R):

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