使用特定值聚合

时间:2014-10-24 01:32:04

标签: r variables aggregate subset rstudio

我正在尝试使用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

我应该单独使用子集还是单独使用聚合来完成?

1 个答案:

答案 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()冲突)