我在美国有一个降水数据集,除以:州,地区(州内),年和月。记录可以追溯到1895年。
我试图按月提取每个州内每个地区的121年平均值(1895年至今)。显然,人们可以通过拆分和/或子集来做到这一点,但我不会一遍又一遍地重写相同的基本代码行。我想做的是运行一个循环,它将通过州,区和月的数据集来处理12个月中每一个的121年平均值 - 即:alabama,01区,jan - wyoming,10区,12月。
以下是数据表的第1行和最后一行:
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
非常感谢在这方面的任何建议/帮助。谢谢!
答案 0 :(得分:1)
我们可以使用data.table
library(data.table)
melt(setDT(df), id.var = c('state', 'district', 'year'),
variable.name= 'month')[, .(avg = mean(value)) ,.(state, district, month)]