apply(dt,2,mean)
не работает, потому что apply
приводит первый аргумент к массиву через as.matrix
(как указано в первом абзаце раздела Подробности ?apply
) Поскольку первый столбец является символьным, все элементы в объекте принудительной матрицы будут символьными.
Попробуйте вместо этого:
sapply(dt,mean) # works because data.frames are lists
Чтобы рассчитать среднее значение столбца по группам:
# using base functions
grpMeans1 <- t(sapply(split(dt[,c("v1","v2","v3")], dt[,"Tag"]), colMeans))
# using plyr
library(plyr)
grpMeans2 <- ddply(dt, "Tag", function(x) colMeans(x[,c("v1","v2","v3")]))