我有一个需要平均的数据文件。
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
实际数据不连续且缺少几个间隔。我可以在同一天完成,但我不知道如何包括第二天的时间。
答案 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
里面的原因。从那里它只是索引。