Преобразование ежедневных данных в суммированные / усредненные ежемесячные данные с заданным форматом макета c - PullRequest
1 голос
/ 29 мая 2020
• 1000 ежемесячные данные. Конечный продукт представляет собой фрейм данных с месяцами в столбце и годами в строках Пример .

Мне удалось получить среднемесячное значение моего набора данных, используя:

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 ...    ...

Заранее спасибо!

1 Ответ

1 голос
/ 29 мая 2020

Мы можем извлечь «год» и «дату», а затем использовать 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)
...