每次事件出现在R中的数据框中时,如何计算前后值

问题描述

我这里有一个类似此示例的数据库,我需要计算事件发生前10分钟以及事件发生后10分钟的平均值,总和和标准差。数据框中的数字仅用于说明。

df = data.frame(seq(ISOdatetime(2020,5,4,0),ISOdatetime(2020,19,by=(60*1)))
colnames(df) = "date"

df$results = c(18,25,35,96,100,50,48,67,36,98,46,75,98)
df$events = c(NA,NA,"event A","event B","event C","event D",NA)

我想将这些计算合并到一个新的数据框中,其中包含事件名称和日期以及之前和之后时刻的平均值,总和和标准偏差的值。谢谢您的帮助。

编辑: 我想将事件的先前值(总和,平均值和标准偏差)(即紧接前10分钟)和事件的后续值(即事件发生在10:01,我想提前“ 01” + 9分钟,所以,我需要将“ avg.pre”,“ sd.pre”,“ sum.pre”和“ avg.pos”中的值分开,“ sd.pos”和“ sum.pos”

new.df = data.frame(c("event A","event D")); colnames(new.df) = "events"
new.df$date.pre = c("2020-05-04 00:06:00","2020-05-04 00:09:00"," 2020-05-04 00:11:00"," 2020-05-04 00:18:00")
new.df$avg.pre = c(53.14,52.77...)
new.df$sd.pre = c(32.72,31.18,...)
new.df$sum.pre = c(372,475,68,...)
new.df$avg.pos = c(61.71,64.4,...)
new.df$sd.pos = c(23.26,23.06,...)
new.df$sum.pos = c(617,644,...)

解决方法

您可以尝试在每次事件发生前后10分钟使用此方法过滤数据:

MyCollectionCreateView