我对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
我已经尝试过搜索类似的问题,但可以找到解决方案,其中计算出现数量而不增加。
如果你可以帮助我会很棒
提前致谢!
答案 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