我有一個名爲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