2014-12-03 40 views
-1

我对R很新,需要一些任务帮助。我的数据帧DATA1看起来就像这样:R - 根据id事件创建增量列

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

我需要创建一个新的列顺序,其中增量基于ID,基本上告诉我,多久是beeing当时对这个ID执行的操作。对于一个新的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 

我已经尝试过寻找一个类似的问题,但可能只是找到解决方案,在不增加计数occurencies的数量。

这将是伟大的,如果你能帮我

在此先感谢!

回答

2

您可以使用getanIDsplitstackshape

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 

或者avebase 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 
+0

非常感谢!那正是我期待的! – user1584400 2014-12-03 12:16:24