2015-11-06 90 views
0

我需要通過日期聚集,我的 「日」 的數據集:骨料與在r中分類變量

>

head(Day) 
     Date Day Month Year TimeDay Room Temperature Light  RH 
1 02/09/2013 2  9 2013 08:00:00 2  21.7 71.76 100.00 
2 02/09/2013 2  9 2013 08:15:00 2  21.7 61.27 100.00 
3 02/09/2013 2  9 2013 08:30:00 2  21.7 58.96 100.00 
4 02/09/2013 2  9 2013 08:45:00 2  21.8 52.96 100.00 
5 02/09/2013 2  9 2013 09:00:00 2  22.0 59.92 86.26 
6 02/09/2013 2  9 2013 09:15:00 2  22.2 65.12 84.01 

但包括列6,其對應於房間號:

newDay <- aggregate(Day[, 6:9], list(Day$Date), mean,na.rm=TRUE) 

我得到以下警告:

療法e使用了50條或更多警告(使用警告()查看前50條)

並且新數據集「newDay」中的「房間」列導致了NAs。

是因爲「房間」欄是一個因素嗎?我應該如何處理這個問題?

+0

你的意思是你想按天和房間號累計嗎? – jlhoward

+0

按日期和房間號 – Luisa

+0

如果「房間」列是一個因素,它不應該是你的分組變量之一而不是結果變量之一嗎? – A5C1D2H2I1M1N2O1R2T1

回答

0

由於您不需要TimeDay,我只是將其刪除,因爲均值函數無法應用。我會用dplyr的summarise_each和group_by來代替聚合。在你的例子中你使用了平均值,所以我也使用了它。

Day$TimeDay <- NULL 
    library(dplyr) 
    newDay <- summarise_each(group_by(Day, Date), funs(mean)) %>% 
       select(-Day, -Month, -Year, -Room) 

編輯: 添加管道,謝謝@ r2evans。被移除的房間,因爲它沒有必要。

+0

既然你引入了dplyr,那麼使用'...%>%select(-Day,-Month,-Year)'列刪除會更容易嗎? – r2evans

+0

謝謝@mmstan!也許,我沒有解釋清楚我想做什麼。我想獲得由Date彙總的數據框。從數據集中可以看出,在2013年9月2日的日期中有很多觀察結果,我想將該日期的溫度作爲平均值,以便每天只能獲得一個觀察值/行數。 – Luisa

+0

我確實當我重新創建您的數據集,每行一個日期和溫度平均值時,用這個來獲得您想要的輸出。是否強制使用聚合函數? – mmstan