2015-02-26 1 views
0

Извините, если этот вопрос уже рассмотрен уже на SO, но я пока не могу найти быстрое решение.Агрегат по конкретному году в R

Я пытаюсь объединить набор данных к конкретному году. Мой кадр данных состоит из почасовых климатических данных в течение 10 лет.

head(df) 
# day month year hour rain temp pressure wind 
#1 1  1 2005 0 0 7.6  1016 15 
#2 1  1 2005 1 0 8.0  1015 14 
#3 1  1 2005 2 0 7.7  1014 15 
#4 1  1 2005 3 0 7.8  1013 17 
#5 1  1 2005 4 0 7.3  1012 17 
#6 1  1 2005 5 0 7.6  1010 17 

Для расчета ежедневных средств из приведенных выше набора данных, я использую эту функцию совокупного

g <- aggregate(cbind(temp,pressure,wind) ~ day + month + year, d, mean) 
options(digits=2) 

head(g) 
# day month year temp pressure wind 
#1 1  1 2005 6.6  1005 25 
#2 2  1 2005 6.5  1018 25 
#3 3  1 2005 9.7  1019 22 
#4 4  1 2005 7.5  1010 25 
#5 5  1 2005 7.3  1008 25 
#6 6  1 2005 9.6  1009 26 

К сожалению, я получаю огромный набор данных, охватывающие все 10 лет (с 2005 по 2014 году). Мне интересно, сможет ли кто-нибудь помочь мне настроить вышеупомянутый агрегированный код, чтобы я мог ежедневно давать сводки в течение определенного года, а не всех из них одним ударом?

+2

Вы можете подмножить 'df' и использовать его в совокупности. то есть. 'd1 <- подмножество (df, год% в% 2005: 2014); aggregate (cbind (temp, pressure, wind) ~ day + month + year, d1, mean) ' – akrun

+0

Большое спасибо Akrun за ваш быстрый ответ и полезный совет, который работает как удовольствие! Именно то, что я искал. Еще раз спасибо! – PJG

+0

Если вы хотите его в одной строке, используйте аргумент 'subset' в aggregate. Добавлено это как решение. – akrun

ответ

1

Вы можете использовать subset аргумент в aggregate

aggregate(cbind(temp,pressure,wind) ~ day + month + year, df, 
        subset=year %in% 2005:2014, mean) 
+0

Идеальный Акрун, большое спасибо! – PJG

0

Dplyr также делает это хорошо.

library(dplyr) 

df %>% 
filter(year==2005) %>% 
group_by(day, month, year) %>% 
summarise_each(funs(mean), temp, pressure, wind) 
Смежные вопросы