2014-10-24 2 views
0

Я пытаюсь использовать функцию совокупности в R, чтобы получить среднее значение EMISSIONS, организованное YEAR, но только для строк, где 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

Используя этот образец

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())

+0

Epic answer - я попробовал, только чтобы получить сообщение об ошибке, но после изменения моего имени переменной он отлично работает. Спасибо! – Sekoul

 Смежные вопросы

  • Нет связанных вопросов^_^