如何根据时间平均

时间:2014-05-05 15:14:31

标签: r time

我有一个需要平均的数据文件。

data<-data.frame(
    Data=seq(
        from=as.POSIXct("2014-04-01 00:00:00"), 
        to=as.POSIXct("2014-04-03 00:00:00"), 
        by ="5 min"
    ),
    value=rnorm(577,0,1)
)

我需要找到&#34;值&#34;的平均值。从05:00:00到17:00:00然后从17:00:00到05:00:00(次日)。 例如从2014-04-01 05:00:00到2014-04-01 17:00:00以及从2014-04-01 17:00:00到2014-04-02 05:00:00

实际数据不连续且缺少几个间隔。我可以在同一天完成,但我不知道如何包括第二天的时间。

2 个答案:

答案 0 :(得分:2)

这是一个策略。您可以使用cut.POSIXt和seq.POSIXt创建区间因子,然后使用它来获取不同区间的均值。

intervals<-cut(
    data$Data, 
    breaks=seq(
        as.POSIXct("2014-03-31 17:00:00"), 
        as.POSIXct("2014-04-03 5:00:00"), 
        by="12 hours"
    )
)

means<-tapply(data$value, intervals, mean)

as.data.frame(means)

答案 1 :(得分:1)

这是一种方式:

day <- data[as.numeric(strftime(data$Data,"%H")) > 5 & 
            as.numeric(strftime(data$Data,"%H")) < 17,]

night <- data[as.numeric(strftime(data$Data,"%H")) < 5 | 
              as.numeric(strftime(data$Data,"%H")) > 17,]

strftime返回一个字符向量,这就是为什么它嵌套在as.numeric里面的原因。从那里它只是索引。