R中多个条件子集的循环

时间:2016-06-30 01:07:02

标签: r loops

我在美国有一个降水数据集,除以:州,地区(州内),年和月。记录可以追溯到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

非常感谢在这方面的任何建议/帮助。谢谢!

1 个答案:

答案 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)]