У меня есть данные месячного временного ряда (1987-2017) для 20 станций. Я хочу преобразовать данные длинного формата в данные широкого формата так, чтобы все данные, охватывающие 20 станций, были в одном кадре данных.
head(Monthly_rainfall2[-1:-20,1:5]) #long format data
# A tibble: 6 x 5
Year Month stn1 stn2 stn3
<chr> <ord> <dbl> <dbl> <dbl>
1 1987 Jan NA NA 0
2 1987 Feb NA NA 60.5
3 1987 Mar NA NA 66
4 1987 Apr NA NA 64
5 1987 May NA NA 183.
6 1987 Jun NA NA 216
Обратите внимание, что столбец месяца является упорядоченным коэффициентом.
dput(Monthly_rainfall2[21:50,1:4])
structure(list(Year = c("1987", "1987", "1987", "1987", "1987",
"1987", "1987", "1987", "1987", "1987", "1987", "1987", "1988",
"1988", "1988", "1988", "1988", "1988", "1988", "1988", "1988",
"1988", "1988", "1988", "1989", "1989", "1989", "1989", "1989",
"1989"), Month = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L,
12L, 1L, 2L, 3L, 4L, 5L, 6L), .Label = c("Jan", "Feb", "Mar",
"Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
), class = c("ordered", "factor")), stn1 = c(NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), stn2 = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_)), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -30L))
Я попробовал следующий код
library(tidyr)
wide_data <- spread(Monthly_rainfall2[1:3], Month, stn1 )
Приведенный выше код обеспечивает то, что я хочу, однако я не могу создать все станции одновременно в одном кадре данных
Я хочу, чтобы мой фрейм данных выглядел так, где stn2 начинается сразу после stn1 и затем следует тому же шаблону для всех станций
Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
#stn1
1987 0.8 0.5 0.8 2 20 25 30 30 21 22 3 0
1988 1 1.2 1.8 2 20 22 25 21 15 12 10 9
...
2017 0.5 1 14 19 17 14 15 13 10 14 18 10
#stn2
1987 0.8 0.5 0.8 2 20 25 30 30 21 22 3 0
1988 1 1.2 1.8 2 20 22 25 21 15 12 10 9
...
2017 0.5 1 14 19 17 14 15 13 10 14 18 10
#stn3
1987 0.8 0.5 0.8 2 20 25 30 30 21 22 3 0
1988 1 1.2 1.8 2 20 22 25 21 15 12 10 9
...
2017 0.5 1 14 19 17 14 15 13 10 14 18 10