将每日数据转换为具有特定布局格式的月度总和平均数据。

问题描述 投票:1回答:1

我看了过去类似的问题,但还没有找到与我所寻找的具体问题。

我有一个日数据,我想把它转换为月数据的平均数。最终的产品是一个数据框,列中为月,行中为年。例子.

我已经设法得到我的数据集的月平均数,使用。

library(xts)
ts <- xts(data$tmax, as.Date(data$date, "%Y-%m-%d"))
ts_m = apply.monthly(ts, mean)

    data$Date   data$tmax
1   1951-01-01  3.22777778
2   1951-01-02  6.48888889
3   1951-01-03  10.52777778
4   1951-01-04  1.92777778
5   1951-01-05  1.30000000
6   1951-01-06  0.10000000
7   1951-01-07  -6.72777778
8   1951-01-08  -4.48888889
9   1951-01-09  -0.83888889
10  1951-02-01  -9.92777778
11  1951-02-02  -11.60000000
12  1951-02-03  -8.61111111
13  1951-02-04  -1.40000000
... ...        ...

上面的代码给了我一个带有平均值的xts。

Y-M-D       Tmax_avg
1951-01-09  1.279630
1951-02-12  -3.548611

但我不知道如何转换xts的布局(或者我是否必须转换xts),使它看起来像这样(月向下运行,年横跨)。

   1951   1952  1953
01 1.27   ...
02 -3.54  ...
...   
12 ...    ...

先谢谢你!

r time-series xts
1个回答
1
投票

我们可以提取 "年 "和 "日期",然后使用......。xtabs

Year <- format(as.Date(index(tsm)), '%Y')
Month <- format(as.Date(index(tsm)), '%m')
df1 <- data.frame(Year, Month, tmax = tsm[,1])
xtabs(tmax ~ Month + Year, df1)
© www.soinside.com 2019 - 2024. All rights reserved.