2016-10-10 55 views
-2

我有一个data.frame“n_com”,其中包括“年”(1951-2010),“月”(1,2,3,12) 81个气象站每月降水总量的81个更多值列。R:每个站的降水量数据季节(DJFM)总和

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)为季节性款项。但季节性资金应包括上一年12月的信息,而其他月份的信息应来自当年。 (例如:1956年的季节性总和,其中包括1955年的十二月数据,而其他月份是1956年)

最后,我想要一个data.frame,包含以下列:“year”,“station 1” “station 2”等。

看来,包“hydroTSM”的函数“dm2seasonal”是我创建季节性总和的权利。我的问题是,“hydroTSM”需要特别形成data.frame(长格式的数据),但我的data.frame是宽格式的。是否可以帮助我为“hydroTSM”软件包格式化我的数据,或者有另一种解决方案来创建季节性总和?来自德国

格尔茨

回答

0

更多一个黑客不是一个解决方案,但你很可能只是加1后,“年”列有一个月的所有行= 12:

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

要改变列名称,请参阅“名称”。

然后,要更改为长格式,可以在reshape2包中使用melt,使用yeartemp作为id变量。

Hth。

Hth。