我希望根据时间积累唯一的用户ID,这里是数据
userid time
1 2014-10-01
1 2014-11-16
2 2014-11-14
1 2014-10-16
2 2014-11-16
3 2014-10-16
2014-10-16的唯一ID数为2,2014-11-14的唯一ID数为3。
我想要返回一个像这样的矩阵
userid time count
1 2014-10-01 1
1 2014-11-16 3
2 2014-11-14 3
1 2014-10-16 2
2 2014-11-16 3
3 2014-10-16 2
我想我应该用cumsum来做。实际上,我发现这个帖子正在做类似的事情Cumulative count of unique values in R
但是,我遵循这个主题的第一个答案,但它不能解决我的问题
答案 0 :(得分:1)
由于您似乎正在使用data.table
(从帖子的第一个版本看),这是使用该软件包的方法:
library(data.table)
setDT(dt) # just in case it's still a data.frame
dt[order(time), count := cumsum(!duplicated(userid))][,
count := max(count), by = time]
dt
# userid time count
#1: 1 2014-10-01 1
#2: 1 2014-11-16 3
#3: 2 2014-11-14 3
#4: 1 2014-10-16 2
#5: 2 2014-11-16 3
#6: 3 2014-10-16 2
按time
对数据进行排序后,我们计算唯一userid
的累计数量,然后计算每次的最大数量。