我有一个R数据帧df,如下所示
ID <- c(1,2,1,3,3,3)
Time <- c("7:30","10:30","11:00","4:00","8:00","8:00")
sub_event <- c("TLIF","ALIF","ALIF","ALIF","TLIF","LAMI")
df <- data.frame(ID,Time,sub_event)
我对ID的事件顺序很感兴趣。例如ID 1,在7:30和10:30有2个事件,对于ID 1,它们应分别为seq 1和2.序列是ID的事件顺序。事件也被分解为子事件,而rowid没用。我正在寻找如下输出
ID Time seq
1 1 7:30 1
2 2 10:30 1
3 1 11:00 2
4 3 4:00 1
5 3 8:00 2
答案 0 :(得分:3)
使用新的rowid
功能(1.9.8 +):
library(data.table)
setDT(df)
df[ , seq := rowid(ID)][]
# ID Time seq
# 1: 1 7:30 1
# 2: 2 10:30 1
# 3: 1 11:00 2
# 4: 3 4:00 1
# 5: 3 8:00 2
总的来说,我建议不要使用变量名重载base
函数 - seq
和df
都是函数。它最终会回来困扰你。