R中的多个条件子集循环

  • 本文关键字:条件 子集 循环 loops
  • 更新时间 :
  • 英文 :


我有一个美国降水的数据集,它被分为:州、地区(州内)、年和月。这一记录可以追溯到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)]

最新更新