我正在尝试使用R中的聚合函数来获取由YEAR组织的平均EMISSIONS,但仅适用于FIPS等于24510的行。以下代码为我提供了正确的结果,但此外它还添加了整体排放,总计所有FIPS值。我在这里缺少什么?
这是我正在使用的功能:
sum <- aggregate(NEI$Emissions, list(Year = NEI$year, NEI$fips == 24510), sum);
这是输出:
Year Group.2 x
1 1999 FALSE 7329692.557
2 2002 FALSE 5633326.582
3 2005 FALSE 5451611.723
4 2008 FALSE 3462343.556
5 1999 TRUE 3274.180
6 2002 TRUE 2453.916
7 2005 TRUE 3091.354
8 2008 TRUE 1862.282
这是我想要的输出:
Year x
1 1999 3274.180
2 2002 2453.916
3 2005 3091.354
4 2008 1862.282
我应该单独使用子集还是单独使用聚合来完成?
答案 0 :(得分:1)
使用此示例
set.seed(15)
NEI <- data.frame(year=2000:2004, fips=rep(c(24510,57399), each=5), Emissions=rnorm(10))
您可以使用命令
mysum <- aggregate(Emissions~year, subset(NEI, fips == 24510), sum);
获取
year Emissions
1 2000 0.2588229
2 2001 1.8311207
3 2002 -0.3396186
4 2003 0.8971982
5 2004 0.4880163
(另外,不要将值保存到名为sum
的变量 - 这将与基函数sum()
冲突)