如何从R中的每小时多序列XTS中获取日周期?

如何从R中的每小时多序列XTS中获取日周期?,r,time-series,xts,zoo,R,Time Series,Xts,Zoo,我有一个四个地点一年中每小时的降雨时间序列,如下所示。我想分别计算四个地点全年24小时的总和或平均值。这是气象学中常见的分析,称为日变化。 这将使我了解这些地点的降雨时间。在xts/zoo软件包中有没有一种简单的方法可以做到这一点 head(rg_hr_xts) rg1 rg2 rg3 rg4 2018-06-01 00:59:17 1.0 0.0 0 0 2018-06-01 01:59:17 0.2 0.0

我有一个四个地点一年中每小时的降雨时间序列,如下所示。我想分别计算四个地点全年24小时的总和或平均值。这是气象学中常见的分析,称为日变化。 这将使我了解这些地点的降雨时间。在xts/zoo软件包中有没有一种简单的方法可以做到这一点

head(rg_hr_xts)
                     rg1  rg2  rg3  rg4 
2018-06-01 00:59:17  1.0  0.0    0    0    
2018-06-01 01:59:17  0.2  0.0    0    0    
2018-06-01 02:59:17  0.0  0.2    0    0 
2018-06-01 03:59:17  0.0  1.6    0    0   
2018-06-01 04:59:17  0.0  3.4    0    0   
2018-06-01 05:59:17  0.0  0.8    0    0
注意:我使用了
.indexhour(rg\u hr\u xts)
这给了我每个索引的时间,如下所示

0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19
20 21 22 23  0  1  2  3  4  5  6  7
我想用上面的指数0,1,2对所有小时进行求和,得到一个小时指数为0-23的数据框,以及该小时的降雨量总和

我希望输出数据帧的结构如下:

hour  rg1  rg2  rg3  rg4 
   0  0.3  0.7  1.2  0.4 
   1  1.3  1.5  1.3  1.3 
   2  1.5  1.7  1.9  1.8 
   3  2.0  2.5  2.6  2.9 
   4  2.1  2.9  3.5  3.6

您可以使用
aggregate()
按小时计算总和

library(xts)
# Some reproducible example data
n <- 1e4
set.seed(21)
x <- .xts(cbind(rg1 = runif(n), rg2 = runif(n)), 1:n * 3600 + runif(n)*100)

# Aggregate by hour of the day
y <- aggregate(x, by = .indexhour(x), FUN = sum)

谢谢约书亚!当包的开发人员回答用户查询时,这总是很好的。XTS是必备软件包!!
data.frame(hour = index(y), y)
#    hour      rg1      rg2
# 0     0 214.3876 211.5131
# 1     1 215.5521 205.4340
# 2     2 206.1494 211.7510
# 3     3 223.9533 209.5391
# 4     4 202.8989 211.6612
# 5     5 198.6387 203.7809
# 6     6 218.7807 218.9829
# 7     7 205.2797 214.6127
# 8     8 207.2061 219.2323
# 9     9 217.2509 208.9815
# 10   10 218.4591 202.3216
# 11   11 205.6799 219.2482
# 12   12 206.8984 209.7392
# 13   13 209.4091 205.2837
# 14   14 212.0559 213.2387
# 15   15 211.8372 204.3384
# 16   16 206.5818 221.5508
# 17   17 212.1076 214.9638
# 18   18 219.3799 205.4536
# 19   19 202.6254 202.2210
# 20   20 208.5686 208.5411
# 21   21 213.2116 218.9530
# 22   22 210.6371 207.5539
# 23   23 197.8964 203.9069