R 基于特定时间范围聚合数据
假设我们有一个timestamps列和一个value列,我们希望按照15或20分钟的时间间隔聚合value列。你会怎么做在R?以下是准备数据的示例R 基于特定时间范围聚合数据,r,R,假设我们有一个timestamps列和一个value列,我们希望按照15或20分钟的时间间隔聚合value列。你会怎么做在R?以下是准备数据的示例 start <- as.POSIXct("2015-06-01") interval <- 1 # 1 minute interval end <- start + as.difftime(1, units="days") timestamps = as.numeric(seq(from=start, by=interval*60,
start <- as.POSIXct("2015-06-01")
interval <- 1 # 1 minute interval
end <- start + as.difftime(1, units="days")
timestamps = as.numeric(seq(from=start, by=interval*60, to=end))
values = rnorm(length(timestamps))
dt = data.frame(timestamps,values)
start处理时间序列对象时,最好使用xts
包:
library(xts)
xx <- xts(values,order.by = timestamps)
## aggregate by mean/sum
period.apply(xx,endpoints(xx,'minutes',15),mean)
这种方法有问题。如果以20分钟的间隔分隔数据,它仍然会在一小时内创建3个条目。虽然我们知道在一个小时内,如果我们使用15分钟的时间间隔来聚合数据,其中一个时间间隔应该是零。那么,尝试上面的代码,时间间隔为20。您将看到,我们收到的不是每小时4个条目(根据我们15分钟的汇总),而是3个条目。例如,从12:00开始,我们必须有12:00、12:15、12:30、12:45的条目。但是,每隔20分钟,我们只会收到这样的条目:12:00、12:20、12:40。
timestamps = seq(from=start, by=interval*60, to=end)