【问题标题】:(How) can I use ddply to summarize a dataframe grouped by two factors?(如何)我可以使用 ddply 来总结按两个因素分组的数据框吗?
【发布时间】:2019-02-10 14:53:06
【问题描述】:

问题的简短版本: 如何使用 ddply 来汇总按多个变量分组的数据框?

我目前使用这段代码按条件总结:

ddply(ExampleData, .(Condition), summarize,  Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))

如何调整代码以通过两个变量(条件和块)进行汇总?

所需的输出格式类似于:

  Condition Block Average SD  N Med
1         A     1    0.50 .. ..  ..
2         A     2    0.80 .. ..  ..
3         B     1    0.90 .. ..  ..
4         B     2    0.75 .. ..  ..

====

带有示例数据的更长版本的问题。

数据框:

ExampleData <- structure(list(Condition = c("A", "A", "A", "B", "B", "B"), Block = c(1, 
2, 1, 2, 1, 2), Var1= c(0.6, 0.8, 0.4, 1, 0.9, 0.5)), row.names = c(NA, 
6L), class = "data.frame")

这是:

  Condition Block Average SD N Med
1         A     1  0.6 
2         A     2  0.8
3         A     1  0.4
4         B     2  1.0
5         B     1  0.9
6         B     2  0.5

我意识到有其他方法可以获取摘要,但如果我了解如何调整我拥有的功能,这对我的学习会有好处。 我只是没有成功使它工作,我在stackoverflow上找不到帮助我的例子。我正在寻找类似的东西:

ddply(ExampleData, .c(Condition,Block), summarize,  Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))

(or .(Condition*Block) or list(Condition,Block) or ... ??)

【问题讨论】:

    标签: r aggregate plyr summarize


    【解决方案1】:

    只需删除 .variables 参数中的 c,因此您的代码是:

    library(plyr)
    ddply(ExampleData, .(Condition, Block), summarize,  Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))
    

    顺便说一句,您可能想改用dplyr 而不是plyrhttps://blog.rstudio.com/2014/01/17/introducing-dplyr/

    如果您要在dplyr 中执行此操作:

    summarize(group_by(ExampleData, Condition, Block), Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))
    

    您也可以使用管道,这样可以:

    ExampleData %>% 
      group_by(Condition, Block) %>% 
      summarise(Average=mean(Var1, na.rm=TRUE), 
                SD=sd(Var1),
                N=length(Var1), 
                Med =median(Var1))
    

    【讨论】:

    • 感谢您抽出宝贵时间提供帮助!我会检查 dplyr。到目前为止,“%>%”语法让我有点害怕,但会的..
    猜你喜欢
    • 2018-03-18
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多