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