R中特定小时和月份的数据框中的平均值

2024-05-01

我一直在网上搜索,但还没有找到解决这个可能很简单的问题的方法。

这是使用库“xts”的半小时数据,

library(xts)
data.xts <- as.xts(1:nrow(data), as.POSIXct("2007-08-24 17:30:00") +
                  1800 * (1:nrow(data)))
data.xts <-as.data.frame(data.xts)

我将其更改为data.frame,因为原始数据是data.frame格式。实际上,在原始数据框中,有一个 time_stamp 列,我更喜欢是否可以只使用 time_stamp 列而不是使用“xts”格式。

如何平均一个月的每小时数据,以便绘制不同月份 24 小时的每小时时间序列?

例如,

 2007-08-24 17:30:00  1
 2007-08-25 17:00:00  47
 2007-08-25 17:30:00  48
 2007-08-26 17:00:00  95

将取 2007 年 8 月的平均值,等等。

目标是绘制每个月的平均 24 小时时间序列。

Thanks!


Try

library(dplyr)
res <- dat %>% 
           group_by(month=format(datetime, '%m'),
              #year=format(datetime, '%Y'), #if you need year also
              # as grouping variable
              hour=format(as.POSIXct(cut(datetime, breaks='hour')), '%H')) %>%
           summarise(Meanval=mean(val, na.rm=TRUE))   


 head(res,3)
 #  month hour     Meanval
 #1    01   00 -0.02780036
 #2    01   01 -0.06589948
 #3    01   02 -0.02166218

Update

If your datetime is POSIXlt你可以将它转换为POSIXct.

  dat$datetime <- as.POSIXlt(dat$datetime)

通过运行上面的代码,我得到错误

   # Error: column 'datetime' has unsupported type

你可以使用mutate并转换datetime to POSIXct类由as.POSIXct

  res1 <-  dat %>% 
               mutate(datetime= as.POSIXct(datetime)) %>%
               group_by(month=format(datetime, '%m'),
                 #year=format(datetime, '%Y'), #if you need year also
                 # as grouping variable
                  hour=format(as.POSIXct(cut(datetime, breaks='hour')), '%H')) %>%
               summarise(Meanval=mean(val, na.rm=TRUE))  

data

set.seed(24)
dat <- data.frame(datetime=seq(Sys.time(), by='1 hour', length.out=2000),
    val=rnorm(2000))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

R中特定小时和月份的数据框中的平均值 的相关文章

随机推荐