我有一个名为subdata的数据框,其维数为10299 x 81.列1称为“主题”,列2称为“活动”。我想计算按“主题”和“活动”分组的每列的平均值。将R函数应用于按多种因素分组的数据框
以下是我尝试过的功能,目前看起来没有任何功能。最后我使用了colwise(mean)函数,它似乎工作。我是R新手,刚学过sapply
,lapply
,tapply
函数,它似乎是平均函数在列中工作。
任何人都可以帮我解释一下这些错误或警告信息是什么意思,以及是否有一种方法可以使这些函数起作用?
使用lapply功能:
newdata<- subdata[, lapply(.SD, mean), by = c("Subject","Activity")]
错误消息:
Error in `[.data.frame`(subdata, , lapply(.SD, mean), by = c("Subject", :
unused argument (by = c("Subject", "Activity"))
使用的功能:
newdata<-by(subdata, list(subdata$Subject, subdata$Activity), mean)
我得到了警告消息:
Warning messages:
1: In mean.default(data[x, , drop = FALSE], ...) :
argument is not numeric or logical: returning NA
然后我plyr包ddply试图
ddply(subdata, .(Subject, Activity), mean)
我得到了相同的警告信息:
Warning messages:
1: In mean.default(piece, ...) : argument is not numeric or logical: returning NA 0
最后我用colwise(平均)功能,它似乎工作
newdata<-ddply(subdata, .(Subject, Activity), colwise(mean))
与您的最后一个选项,尝试'numcolwise(mean)'而不是'colwise(mean) – cdeterman 2014-11-20 20:38:41