14

我需要通过一些变量来总结数据框,而忽略其他变量。这有时被称为崩溃。例如,如果我有这样的数据框:

Widget Type Energy  
egg 1 20  
egg 2 30  
jap 3 50  
jap 1 60

然后由 Widget 折叠,以 Energy 为因变量,Energy~Widget,将产生

Widget Energy  
egg  25  
jap  55  

在 Excel 中,最接近的功能可能是“数据透视表”,我已经研究出如何在 python 中执行此操作(http://alexholcombe.wordpress.com/2009/01/26/summarizing-data-by-combinations-of- variables-with-python/),这是一个 R 使用 doBy 库做一些非常相关的事情的例子(http://www.mail-archive.com/r-help@r-project.org/msg02643.html),但是有没有一种简单的方法来完成上述操作?更好的是,ggplot2 库中是否内置了任何东西来创建跨某些变量折叠的图?

4

3 回答 3

15

用于aggregate总结一个因素:

> df<-read.table(textConnection('
+ egg 1 20
+ egg 2 30
+ jap 3 50
+ jap 1 60'))
> aggregate(df$V3,list(df$V1),mean)
  Group.1  x
1     egg 25
2     jap 55

要获得更大的灵活性,请查看tapply功能和plyr包。

ggplot2使用stat_summary中总结

qplot(V1,V3,data=df,stat="summary",fun.y=mean,geom='bar',width=0.4)
于 2010-04-01T05:40:29.237 回答
5

对于熟悉 SQL 的人来说,操作数据帧的另一种方法是 sqldf 包中的 sqldf 命令。

library(sqldf)
sqldf("SELECT Widget, avg(Energy) FROM yourDataFrame GROUP BY Widget")
于 2012-06-01T06:55:41.490 回答
1

@Jyotirmoy 提到这可以通过plyr库来完成。这就是它的样子:

DF <- read.table(text=
"Widget Type Energy  
egg 1 20  
egg 2 30  
jap 3 50  
jap 1 60", header=TRUE)

library("plyr")
ddply(DF, .(Widget), summarise, Energy=mean(Energy))

这使

> ddply(DF, .(Widget), summarise, Energy=mean(Energy))
  Widget Energy
1    egg     25
2    jap     55
于 2012-06-01T16:57:25.407 回答