基于柱日期重复元素序列的柱[复制](Column of sequence with repeated

2019-10-29 15:35发布

这个问题已经在这里有一个答案:

  • 由1列的每一个变化增加 4个回答

考虑与日期的列排序的数据帧:

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日期将非常感激。

Answer 1:

尽管@akrun答案

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

或使用data.table:

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

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



文章来源: Column of sequence with repeated elements based on column with dates [duplicate]