0

考虑一个按日期列排序的数据框:

df=data.frame(event=1:12,
              subject=rep("M325",12),
              date=c(rep("2017-11-01",4),rep("2017-11-14",8)))

我想要的是创建第四列,其序列从 1 到下一个唯一日期,序列中的每个元素在第 i日期重复。例如:

   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 个日期获得此结果的建议。

4

1 回答 1

1

尽管@akrun 给出了答案

df$num <-cumsum(!duplicated(df$date))

或使用data.table:

setDT(df)[, num := rleid(date)]

更快,这个使用 rle 的答案实际上可以解决我的问题。

于 2017-12-19T06:34:15.167 回答