У меня есть кадр данных (df), как показано:
head(df)
Year X1 X2 X3 X4 X5 X6 X7 X8 X9....X36
1 1970 NA NA NA NA NA NA NA NA NA.....
2 1971 123.47 110.19 125.49 121.12 109.23 78.92 111.75 90.70 91.95.....
3 1972 142.20 131.95 173.17 222.52 220.85 175.16 180.09 165.64 164.35.....
4 1973 192.60 174.36 207.86 182.91 170.26 128.39 164.50 157.06 151.11.....
5 1974 214.89 200.21 221.03 188.61 175.43 137.63 156.84 142.45 155.58.....
6 1975 141.88 132.59 154.14 139.14 139.78 81.49 105.59 101.58 113.15.....
str(df)
'data.frame': 48 obs. of 37 variables:
$ Year: num 1970 1971 1972 1973 1974 ...
$ X1 : num NA 123 142 193 215 ...
$ X2 : num NA 110 132 174 200 ...
$ X3 : num NA 125 173 208 221 ...
$ X4 : num NA 121 223 183 189 ...
$ X5 : num NA 109 221 170 175 ...
$ X6 : num NA 78.9 175.2 128.4 137.6 ...
$ X7 : num NA 112 180 164 157 ...
$ X8 : num NA 90.7 165.6 157.1 142.4 ...
$ X9 : num NA 92 164 151 156 ...
$ X10 : num NA 81.8 137 136.7 137.5 ...
..
$ X36 :num NA ..................
Приведенные выше данные представляют собой десять ежедневных данных (по 3 наблюдения за каждый месяц), что составляет 36 наблюдений за год. Первое наблюдение 3 (X1, X2, X3) соответствует январскому месяцу, а второе наблюдение 3 (X4, X5, X6) соответствует февральскому месяцу и впоследствии следует той же схеме для остальной части месяца.
Поэтому мой вопрос: как я могу преобразовать эти данные, чтобы они выглядели так:
Year Month Value
1971 Jan 123.47
1971 Jan 110.19
1971 Jan 125.49
1971 Feb 121.12
1971 Feb 109.23
1971 Feb 78.92
..................
1971 Dec 150
1972 Jan 180
Я попробовал следующее, но, похоже, не работает.
df_L <- df %>%
gather(key = "Month", value = "Value", X1:X36) %>%
mutate(Month = as.numeric(str_replace(Month, "X", "")))
Любая помощь будет оценена