考虑由具有日期的列排序的数据框:
df=data.frame(event=1:12,
subject=rep("M325",12),
date=c(rep("2017-11-01",4),rep("2017-11-14",8)))
我想要的是创建第四列,其序列从1到下一个唯一日期,序列中的每个元素都会重复每个i- th 日期。例如:
event subject date num
1 1 M325 2017-11-01 1
2 2 M325 2017-11-01 1
3 3 M325 2017-11-01 1
4 4 M325 2017-11-01 1
5 5 M325 2017-11-14 2
6 6 M325 2017-11-14 2
7 7 M325 2017-11-14 2
8 8 M325 2017-11-14 2
9 9 M325 2017-11-14 2
10 10 M325 2017-11-14 2
11 11 M325 2017-11-14 2
12 12 M325 2017-11-14 2
任何有关 n 日期获得此结果的建议都将非常感激。
答案 0 :(得分:1)
尽管@akrun的回答
df$num <-cumsum(!duplicated(df$date))
或使用data.table:
setDT(df)[, num := rleid(date)]
速度更快,this answer using rle实际上可以解决我的问题。