У меня есть этот фрейм данных.
mydf<- data.frame(c("a","a","b","b","c","c"),c("e","e","e","e","e","e")
,c(1,2,3,10,20,30),
c(5,10,20,20,15,10))
colnames(mydf)<-c("Model", "Class","Length", "Speed")
Я пытаюсь лучше понять, как работает ddply.
Я хотел бы получить среднюю длину и скорость для каждой пары модели и класса.
Я знаю, что это один из способов: ddply(mydf, .(Model, Class), .fun = summarize, mSpeed = mean(Speed), mLength = mean(Length))
.
Интересно, могу ли я получить среднее значение, используя ddply, не указывая его по одному.
Я пробовал ddply(mydf, .(Model, Class), .fun = mean)
, но получаю сообщение об ошибке
Предупреждающие сообщения: 1: In mean.default (piece, ...): аргумент не является числовым или логическим: возвращается NA
Что ddply
передает аргументу функции? Есть ли способ применить одну функцию к каждому столбцу с помощью ddply
?
Моя цель - узнать больше о ddply
. Я буду принимать только ответы ddply
summarize
, который ожидает фрейм; последующие аргументы (mSpeed
, ...) затем являются аргументами дляsummarize
, поэтому результирующий вызов может бытьsummarize(x, mSpeed=mean(Speed), mLength=mean(Length))
. Во втором вызове вы пытаетесь передать полный кадрmean
, когда ему действительно нужен только вектор. Я не знаю, почему вы предпочли бы указывать его по одному (так как это не будет быстрее), ноddply(mydf, .(Model, Class), .fun = summarize, mSpeed=mean(Speed))
- по одному. - person r2evans   schedule 17.04.2019