具有重复元素的序列列,基于具有日期的列

时间:2017-12-19 06:00:37

标签: r dataframe seq rep

考虑由具有日期的列排序的数据框:

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 日期获得此结果的建议都将非常感激。

1 个答案:

答案 0 :(得分:1)

尽管@akrun的回答

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

或使用data.table:

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

速度更快,this answer using rle实际上可以解决我的问题。