R - 根据id出现创建递增列

时间:2014-12-03 12:10:04

标签: r count dataframe increment

我对R很新,需要一些任务帮助。我的数据框数据1看起来像这样:

ID    Action
A1    A
A1    E
A2    B
B1    A
B2    C
B2    D   
B2    A
B3    E

我需要创建一个新的列序列,它根据ID递增,并且基本上告诉我,当时对此ID执行Action的频率。对于一个新的ID,它将从1开始。它看起来像这样:

ID    Action  Sequence
A1    A       1
A1    E       2
A2    B       1
B1    A       1
B2    C       1
B2    D       2
B2    A       3
B3    E       1

我已经尝试过搜索类似的问题,但可以找到解决方案,其中计算出现数量而不增加。

如果你可以帮助我会很棒

提前致谢!

1 个答案:

答案 0 :(得分:2)

您可以使用getanID

中的splitstackshape
library(splitstackshape)
 getanID(df, 'ID')
 #     ID Action .id
 #1: A1      A   1
 #2: A1      E   2
 #3: A2      B   1
 #4: B1      A   1
 #5: B2      C   1
 #6: B2      D   2
 #7: B2      A   3
 #8: B3      E   1

ave来自base R

transform(df, Sequence=ave(seq_along(ID), ID, FUN=seq_along))
#    ID Action Sequence
#1 A1      A        1
#2 A1      E        2
#3 A2      B        1
#4 B1      A        1
#5 B2      C        1
#6 B2      D        2
#7 B2      A        3
#8 B3      E        1