У меня есть кадр данных, называемый subdata, с размером 10299 x 81. Столбец 1 называется «Тема» и столбец 2, называемый «Activity». Я хочу рассчитать среднее значение для каждого столбца, сгруппированного по «Subject» и «Activity».Функция 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
Затем я попытался ddply в пакете plyr
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