(如何)我可以使用 ddply 来汇总按两个因素分组的数据框?
(How) can I use ddply to summarize a dataframe grouped by two factors?
问题的简短版本:
如何使用 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
我知道有其他方法可以获取摘要,但如果我了解如何调整我拥有的功能,那将对我的学习有好处。
我只是没有成功让它工作,我找不到一个例子来帮助我在 Whosebug 上。我正在寻找类似的东西:
ddply(ExampleData, .c(Condition,Block), summarize, Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))
(或.(条件*块)或列表(条件,块)或...??)
把.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
而不是 plyr
。
https://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))
问题的简短版本: 如何使用 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
我知道有其他方法可以获取摘要,但如果我了解如何调整我拥有的功能,那将对我的学习有好处。 我只是没有成功让它工作,我找不到一个例子来帮助我在 Whosebug 上。我正在寻找类似的东西:
ddply(ExampleData, .c(Condition,Block), summarize, Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))
(或.(条件*块)或列表(条件,块)或...??)
把.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
而不是 plyr
。
https://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))