2015-11-06 72 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