繁体   English   中英

R:按日期剪切并按ID与data.table分组

[英]R: cut by date and grouping by ID with data.table

我有一个data.table其中有一个由iddate上执行的操作唯一标识的演员列表。 actor在特定date完成的事情数量没有限制。

require(data.table)
set.seed(28100)
df.in <- data.table(id = sample(1:10, 100, replace=TRUE),
                    date = sample(2001:2012, 100, replace=TRUE))

现在,我想总结一下我的数据集,以查找以下序列的每个间隔的出现次数

sequence <- seq(2000, 2012, 4)

df.out1 <- as.data.frame(table(cut(df.in$date, breaks = sequence)))

df.out1
# Var1 Freq
# 1 (2000,2004]   35
# 2 (2004,2008]   27
# 3 (2008,2012]   38

都好。 但是现在,我不计算发生的次数,而是想计算每个时间间隔(即一次或多次发生)中活跃的参与者的数量。

你的意思是这样吗?

df.in[, interv := cut(date, sequence)][, .(Actors = length(unique(id))), by = interv]
#        interv Actors
#1: (2000,2004]     10
#2: (2008,2012]      9
#3: (2004,2008]     10

如果您使用的是GitHub上的1.9.5开发版本,则可以使用uniqueN()代替length(unique())

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM