我希望在一个时间序列中计算组内每个子组的计数/总和。
我的问题与这个问题非常相似 Rolling Count of Events Over Time Series。
对于交叉发布道歉,我一直在寻找在一个时间范围内(当前日期和之前的N(比如4天))计算第1组中每个类别的事件的方法。我想对第2组中的每个子类型重复此过程,即第2组是一个较大的组,可能/可能不包含第1组中的所有类别。
例如,如果我们有一个类似于以下
的数据框dates = as.Date(c("2011-10-09",
"2011-10-15",
"2011-10-16",
"2011-10-18",
"2011-10-21",
"2011-10-22",
"2011-10-24"))
group1=c("A",
"A",
"A",
"A",
"L",
"L",
"A")
group2=c("I",
"I",
"I",
"I",
"I",
"I",
"II")
df1 <- data.frame(dates, group1, group2)
我正在寻找与此相似的输出。 (已编辑)最后,我想传播我的数据集,以便我将第1组中的类别放在不同的列中,并根据日期和第2组排列行。如何确保第1组类别的计数结转到新行(并满足上述时间范围)?
dates group1 group2 count (A) count (L)
1 2011-10-09 A I 1 0
2 2011-10-15 A I 1 0
3 2011-10-16 A I 2 0
4 2011-10-18 A I 3 0
5 2011-10-21 L I 0 1
6 2011-10-22 L I 0 2
7 2011-10-24 A II 1 0
谢谢!
答案 0 :(得分:0)
如果您尝试在事件发生前的4天内显示group1和group2中所有事件发生的次数,则可以group_by
这两个事件组然后进行计数(使用{{1分别访问每个日期)。
sapply
返回:
df1 %>%
group_by(group1, group2) %>%
mutate(count = sapply(dates
, function(x){
sum(dates <= x & dates > (x-4))
}))