我有一个美国降水的数据集,它被分为:州、地区(州内)、年和月。这一记录可以追溯到1895年。
我试图按月提取每个州内每个地区的121年平均值(1895年至今)。显然,可以通过拆分和/或子集来做到这一点,但我不想一遍又一遍地重写相同的基本代码行。我想做的是运行一个循环,它将按州、地区和月份对数据集进行处理,呈现12个月中的每个月的121年平均值,例如:阿拉巴马州,01区,1月-怀俄明州,10区,12月
下面是数据表的第一行和最后一行:
state, district, year, Jan, Feb, Mar, Apr, May, June, July, Aug, Sept, Oct, Nov, Dec
01, 01 1895 7.37 1.41 7.17 2.72 3.06 4.04 4.58 4.00 3.41 2.28 1.83 5.83
...
50, 13, 2016, 4.77, 3.02, 3.28, -9.99, -9.99, -9.99, -9.99, -9.99, -9.99, -9.99, -9.99, -9.99
在这方面任何建议/帮助都将非常感谢。谢谢! 我们可以用data.table
library(data.table)
melt(setDT(df), id.var = c('state', 'district', 'year'),
variable.name= 'month')[, .(avg = mean(value)) ,.(state, district, month)]