【发布时间】:2017-02-16 11:47:27
【问题描述】:
考虑以下数据框
time <-c('2016-04-13 23:07:45','2016-04-13 23:07:50','2016-04-13 23:08:45','2016-04-13 23:08:45'
,'2016-04-13 23:08:45','2016-04-13 23:07:50','2016-04-13 23:07:51')
group <-c('A','A','A','B','B','B','B')
value<- c(5,10,2,2,NA,1,4)
df<-data.frame(time,group,value)
> df
time group value
1 2016-04-13 23:07:45 A 5
2 2016-04-13 23:07:50 A 10
3 2016-04-13 23:08:45 A 2
4 2016-04-13 23:08:45 B 2
5 2016-04-13 23:08:45 B NA
6 2016-04-13 23:07:50 B 1
7 2016-04-13 23:07:51 B 4
我想在5 seconds level - group level 处重新采样此数据帧,并计算每个 value 的 sum time-interval - @987654326 @。
区间左闭右开。例如,输出的第一行应该是
2016-04-13 23:07:45 A 5 因为第一个 5 秒间隔是 [2016-04-13 23:07:45, 2016-04-13 23:07:50[
如何在dplyr 或data.table 中做到这一点?我需要为时间戳导入lubridate 吗?
【问题讨论】:
-
错字已修复。非常感谢!
-
我认为来自
data.table的foverlaps在这种情况下可能有用。我看看我能不能烤一个asnwer -
谢谢,或者用
dplyrgroup_by?我不知道 -
@Noobie,只是为了澄清,我猜这个区间在右边是开放的......(这就是为什么你没有在第一行的总和中包含
23:07:50值输出)?另外,如果组不同但发生在相同的时间间隔内,你会怎么处理(例如7 2016-04-13 23:07:51 B 4,假设下一行是8 2016-04-13 23:07:53 A 12)?我们是否忽略了组间的差异并简单地将 1、4 和 12 相加? -
嗨,约瑟夫,是的,左侧关闭,右侧打开。对于第二点,聚合在时间组级别,因此两个不同组的两个确切时间戳永远不会混淆在一起
标签: r data.table dplyr lubridate