我有一个包含日期/时间数据的文件及其所述日期和时间的测量值。在一个月的过程中每十分钟测量一次值,我最终尝试进行时间序列分析。然而,在此之前,我想通过计算每60分钟的平均测量值来将10分钟间隔聚合到每小时间隔。以下是我的数据样本(总共4319个观察结果):
Date/Time Value
2013-01-01 00:00:00 31,439999
2013-01-01 00:10:00 33,439999
2013-01-01 00:20:00 39
2013-01-01 00:30:00 35,279999
2013-01-01 00:40:00 37,279999
2013-01-01 00:50:00 32,199997
2013-01-01 01:00:00 35,279999
2013-01-01 01:10:00 38,199997
我的日期/时间数据属于POSIXlt类型,测量值属于类型因子。 我在这个网站上搜索过,我发现其他用户发布了几个主题,但它们并不适用于我,或者我不能使用帖子上的建议重新创建相同的结果。
例如,另一个用户几乎问了与我完全相同的问题:Aggregate values of 15 minute steps to values of hourly steps 我完全按照他们的答案提供的步骤。
library(xts)
dat.xts <- xts(data$values,
as.POSIXct(data$datetime))
hourly.apply(dat.xts,mean)
但是对于最后一行,我收到以下错误消息:
Error: could not find function "hourly.apply"
虽然我已经安装了xts包以及zoo包,但是littlely.apply函数似乎源于它。这可能是什么原因? 提前谢谢。
答案 0 :(得分:2)
&#34; hourly.apply&#34;似乎不存在,但看着“适应日常”。在xts包中的功能似乎很容易创建。
参见xts :: apply.daily。我已经改变了#days?#39;到了&#39;小时&#39;产生以下
apply.hourly <- function(x, FUN,...) {
ep <- endpoints(x, 'hours')
period.apply(x, ep, FUN, ...)
}
试一试
my.time <- seq(from = as.POSIXct('2000-01-01 00:00:00'),
to = as.POSIXct('2000-01-01 2:00:00'),
by = '10 min')
my.data <- rep(10, length = length(my.time))
my.data <- as.xts(my.data, order.by = my.time)
apply.hourly(my.data, sum)
[,1]
2000-01-01 00:50:00 60
2000-01-01 01:50:00 60
2000-01-01 02:00:00 10
答案 1 :(得分:1)
sales1512<-read.csv(file.choose())
head(sales1512)
sdate hsales
1 2011-01-06 01:00 0
2 2011-01-06 02:00 0
3 2011-01-06 03:00 0
4 2011-01-06 04:00 0
5 2011-01-06 05:00 0
6 2011-01-06 06:00 0
library(xts)
dat.xts <- xts(sales1512$hsales,as.POSIXct(sales1512$sdate))
head(dat.xts)
[,1]
2011-01-06 00:00:00 0
2011-01-06 01:00:00 0
2011-01-06 02:00:00 0
2011-01-06 03:00:00 0
2011-01-06 04:00:00 0
2011-01-06 05:00:00 0
ep<-endpoints(dat.xts, on="hours", k=4) #on=”how your data is spaced”,k=how you want to club it
dat.xts.4hourly<-period.apply(dat.xts, FUN=sum,INDEX=ep)
head(dat.xts.4hourly)
[,1]
2011-01-06 01:00:00 0
2011-01-06 05:00:00 0
2011-01-06 09:00:00 14
2011-01-06 13:00:00 112
2011-01-06 17:00:00 112
2011-01-06 21:00:00 42
tail(dat.xts.4hourly)
[,1]
2013-10-04 05:00:00 275.8
2013-10-04 09:00:00 551.6
2013-10-04 13:00:00 551.6
2013-10-04 17:00:00 551.6
2013-10-04 21:00:00 551.6
2013-10-04 23:00:00 275.8
nrow(dat.xts.4hourly)
[1] 5523