R:按日期剪切,按ID和data.table分组

时间:2015-05-21 13:24:58

标签: r data.table

我有一个data.table,其中包含由id date处理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

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

if myobject.is_a?(Foo)
  #it's an instance of foo
else
  #it's something else
end

一切都好。但是现在我不计算事件的数量,而是计算每个区间中活动的参与者的数量,即一次或多次发生。

1 个答案:

答案 0 :(得分:6)

你是说这样的意思吗?

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())