ddply如何拆分数据?

问题描述 投票:0回答:1

我有这个数据框。

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的答案

r plyr
1个回答
0
投票

这是使用dplyrsummarize函数的解决方案。



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

reprex package创建于2019-04-16(v0.2.1)

© www.soinside.com 2019 - 2024. All rights reserved.