首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >(如何)我可以使用ddply来总结按两个因素分组的数据?

(如何)我可以使用ddply来总结按两个因素分组的数据?
EN

Stack Overflow用户
提问于 2018-09-05 12:45:40
回答 1查看 1.4K关注 0票数 0

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

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

代码语言:javascript
运行
复制
ddply(ExampleData, .(Condition), summarize,  Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))

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

期望的输出格式,类似于:

代码语言:javascript
运行
复制
  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 .. ..  ..

====

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

Dataframe:

代码语言:javascript
运行
复制
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")

即:

代码语言:javascript
运行
复制
  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

我意识到有其他方法可以得到总结,但如果我懂得如何调整自己的功能,这将对我的学习有好处。我只是没有成功地使它发挥作用,我找不到一个例子来帮助我在这里堆积如山。我在找这样的东西:

代码语言:javascript
运行
复制
ddply(ExampleData, .c(Condition,Block), summarize,  Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))

(或.(条件*阻止)或列表(条件,阻止)或.?)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-05 12:59:34

只需删除.variables参数中的c,所以您的代码如下:

代码语言:javascript
运行
复制
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中这样做

代码语言:javascript
运行
复制
summarize(group_by(ExampleData, Condition, Block), Average=mean(Var1, na.rm=TRUE), SD=sd(Var1),N=length(Var1), Med =median(Var1))

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

代码语言:javascript
运行
复制
ExampleData %>% 
  group_by(Condition, Block) %>% 
  summarise(Average=mean(Var1, na.rm=TRUE), 
            SD=sd(Var1),
            N=length(Var1), 
            Med =median(Var1))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52185486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档