gpt4 book ai didi

r - 如何在保持日期间隔和其他值的同时聚合 5 分钟到 30 分钟的数据

转载 作者:行者123 更新时间:2023-12-02 07:32:25 30 4
gpt4 key购买 nike

我有以下数据:

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(我想 sum 也可以,因为它是非零的)。

我已经从 zoo 包中尝试了 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

最佳答案

这似乎也是正确的:

data$date <- as.POSIXct(as.character(data$date))

interval <- seq(min(data$date), max(data$date), "30 mins")

intervals <- c(data$date[1], interval + 5*60)

res <- na.omit(aggregate(list(value = data$value, indicator = data$indicator),
list(date = findInterval(data$date, intervals)),
function(x) if(length(x) == 6) sum(x) else NA))

res$date <- interval[res$date]

res
# date value indicator
#2 2013-08-28 08:30:00 11.130 1
#3 2013-08-28 09:00:00 11.088 0

关于r - 如何在保持日期间隔和其他值的同时聚合 5 分钟到 30 分钟的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20479945/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com