Как ddply разделяет данные? - PullRequest
       14

Как ddply разделяет данные?

0 голосов
/ 17 апреля 2019

У меня есть этот фрейм данных.

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:В mean.default (piece, ...): аргумент не является числовым или логическим: возвращает NA

Что ddply передает аргумент функции?Есть ли способ применить одну функцию к каждому столбцу, используя ddply?

Моя цель - узнать больше о ddply.Я только приму ответы будут ddply

1 Ответ

0 голосов
/ 17 апреля 2019

Вот решение, использующее dplyr и функцию summarize.



library(dplyr)


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")

#summarize data by Model & Class
mydf %>%  group_by(Model, Class) %>% summarize_if(is.numeric, mean)


#> # A tibble: 3 x 4
#> # Groups:   Model [3]
#>   Model Class Length Speed
#>   <fct> <fct>  <dbl> <dbl>
#> 1 a     e        1.5   7.5
#> 2 b     e        6.5  20  
#> 3 c     e       25    12.5

Создано в 2019-04-16 пакетом Представления (v0.2.1)

...