,我有以下数据:如何从5分钟汇总数据,到30分钟,同时保持日期的时间间隔等数值
value <- c(1.869, 1.855, 1.855, 1.855, 1.855, 1.855, 1.855, 1.848, 1.848, 1.848, 1.848, 1.848, 1.848, 1.849)
date <- c("2013-08-28 08:00:00 UTC", "2013-08-28 08:05:00 UTC", "2013-08-28 08:10:00 UTC", "2013-08-28 08:15:00 UTC", "2013-08-28 08:20:00 UTC", "2013-08-28 08:25:00 UTC", "2013-08-28 08:30:00 UTC", "2013-08-28 08:35:00 UTC", "2013-08-28 08:40:00 UTC", "2013-08-28 08:45:00 UTC", "2013-08-28 08:50:00 UTC", "2013-08-28 08:55:00 UTC", "2013-08-28 09:00:00 UTC", "2013-08-28 09:05:00 UTC")
indicator <- c(1,0,0,1,0,0,0,0,0,0,0,0,0,1)
data <- data.frame(date=date,value=value, indicator=indicator)
我想要做的两件事情。首先,我想汇总/总结它到30分钟的水平,但以00和30结尾。例如,此数据中的第一个值不会包含在计算中,但8:05至8:30将汇总至8:30,8:35至9:00至9:00,依此类推。我也想汇总指标值。所以,如果有1个礼物,我希望那里有1个(我想总和也会工作,因为它不是零)。
我rollapply试过(其作品,但我必须手动确保数据在8:05开始),从动物园软件包,但想保持的日期和聚集指标,以及:
aggdata <- rollapply(data=data$value,width=6,FUN=sum,by=6)
不包括整整30分钟间隔的数据对我来说毫无用处,所以我宁愿不要包含这些数据。我所需的输出是:
date value indicator
"2013-08-28 08:00:00 UTC" 1.869 1
"2013-08-28 08:30:00 UTC" 11.13 1
"2013-08-28 09:00:00 UTC" 11.088 0
"2013-08-28 09:05:00 UTC" 1.849 1
或更好:
date value indicator
"2013-08-28 08:00:00 UTC" NA NA
"2013-08-28 08:30:00 UTC" 11.13 1
"2013-08-28 09:00:00 UTC" 11.088 0
"2013-08-28 09:05:00 UTC" NA NA
甚至更好:
date value indicator
"2013-08-28 08:30:00 UTC" 11.13 1
"2013-08-28 09:00:00 UTC" 11.088 0
我喜欢这个答案除了'Z [-1,]'部分 - 即,您需要检查数据,然后明确排除代码中的第一行。 –