我有一个数据框yy。我想做一个数据的聚合。有一个时间戳变量,时间变量中有重复。 我想找到时间戳的唯一值,并汇总此数据框中与此唯一时间戳值相关的所有其他变量。最后我需要得到其他变量的均值。 这是数据样本
temp yield density time
1 54 NA 30.23 2009-12-31 18
2 54 NA 30.22 2009-12-31 19
3 53 NA 30.20 2009-12-31 20
4 53 NA 30.19 2009-12-31 21
5 50 NA 30.18 2009-12-31 22
6 51 3 30.16 2009-12-31 23
.......
我运行以下代码:
aggdata=aggregate(yy~time, by= list(unique(time)), data =yy, FUN = mean,na.rm=TRUE)
我收到了这个警告
参数不是数字或逻辑:返回NA
如果我一次运行聚合一个变量,它就可以运行
aggdata=aggregate(temp~time, by= list(unique(time)),data=yy,FUN=mean)
但如果使用整个数据列表yy,则存在错误。 有人可以解释一下吗?
答案 0 :(得分:0)
这似乎可以使用包dplyr
您可以执行以下操作:
yy <- yy %>% group_by(time) %>% summarize(meantemp = mean(temp), meanyield = mean(yield))
答案 1 :(得分:0)
使用data.table
,将'data.frame'转换为'data.table'(setDT(yy)
),按'时间'分组,指定要在.SDcols
中汇总的列,循环通过他们获得mean
。
library(data.table)
setDT(yy)[, lapply(.SD, mean, na.rm=TRUE), by = time, .SDcols = c("temp", "yield")]