R: сезонные суммы данных об осадках (DJFM) для каждой станции

#r

#r

Вопрос:

У меня есть data.frame «n_com», который включает столбцы для «год» (1951-2010), «месяц» (1,2,3,12) и 81 дополнительных столбцов значений для месячных сумм осадков 81 метеостанции.

  Jahr Monat 12_NS_Monat 13 NS Monat 14 NS Monat 15 NS Monat 16 NS Monat
1 1951     1         397        2045        1447        2666         236
2 1951     2         528        1043         464        1397         202
3 1951     3         819         480         953        1634         665
4 1951    12         363         252         881         610         350
5 1952     1         391         530         557        1321         339
6 1952     2         683         684         920        1125         805  

Теперь мне нужны сезонные суммы за каждый год за месяцы декабрь, январь, февраль и март (DJFM) для каждой станции. Но сезонные суммы должны включать информацию за декабрь-месяц предыдущего года, в то время как информация о других месяцах должна поступать из текущего года.
(например: сезонная сумма за 1956 год, которая включает данные за декабрь 1955 года, в то время как другие месяцы относятся к 1956 году)

Наконец, мне нужен data.frame со следующими столбцами: «год», «станция 1», «станция 2» и так далее..

Кажется, что функция «dm2seasonal» пакета «hydroTSM» подходит мне для создания сезонных сумм. Моя проблема в том, что «hydroTSM» нуждается в специальном формировании data.frame (данные в длинном формате), но мой data.frame находится в широкоформатном формате. Может ли anayone помочь мне отформатировать мои данные для пакета «hydroTSM» или у него есть другое решение для создания сезонных сумм?

приветствие из Германии

Ответ №1:

Скорее взлом, чем решение, но вы, вероятно, могли бы просто добавить 1 к столбцу «год» для всех строк с month = 12 :

n_com$yeartemp = n_com$year
n_com$yeartemp[n_com$month == 12] = n_com$year[n_com$month == 12] 1

Чтобы изменить имена столбцов, см. раздел «имена`.

Затем, чтобы перейти к длинному формату, который вы можете использовать melt в reshape2 пакете, используя yeartemp в качестве переменной id.

Hth.

Hth.