在R语言中,是否有一种方法可以在数据框的分组内创建索引?

3

我试图为一个因子变量的不同组别水平创建一个索引(即一个从0到n的列),所有这些都在一个列中。具体来说,以下是一个针对数据框 D 的最小工作示例:

ID  Index
1   1
1   2
2   1
2   2
3   1
3   2
3   3

我目前拥有第一列,希望获得第二列。我在解决这个问题上花费的时间比想象中多。我尝试了几种方法,但以下方法似乎应该有效:

dlply(D, .(ID), function(D){D$index = seq.int(nrow(D$ID))})

1
尝试使用 group_bydata.table::rleid 创建新列。您可以在 mutate 中使用 data.table::rleid - Andrew
5
使用dplyr库,对数据框df按照ID进行分组,并添加一列名为Index表示每个组内行的序号。具体代码如下:library(dplyr) df %>% group_by(ID) %>% mutate(Index = row_number()) - Tung
1
@Tung 谢谢,这个解决方案有效!如果您在下面添加一篇帖子,我会将其标记为正确答案。Andrew,我没有尝试您的解决方案,但还是谢谢。 - user3859248
1
没问题,只要你的问题解决了! - Andrew
1
@user3859248:不用担心,很高兴解决了您的问题。如果您愿意,您可以发布答案以帮助未来的读者。 - Tung
1个回答

4

在原问题的评论中,Tung提供的答案对我有用。为了完整起见,在此提供:

library(dplyr)
df %>% 
  group_by(ID) %>% 
  mutate(Index = row_number())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接