如何通过某些变量折叠数据框,并在其他变量中取平均值

Ale*_*mbe 14 pivot-table r ggplot2

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

Widget Type Energy  
egg 1 20  
egg 2 30  
jap 3 50  
jap 1 60
Run Code Online (Sandbox Code Playgroud)

然后由Widget折叠,使用Energy的因变量Energy~Widget会产生

Widget Energy  
egg  25  
jap  55  
Run Code Online (Sandbox Code Playgroud)

在Excel中,最接近的功能可能是"数据透视表",我已经研究了如何在python中实现它(http://alexholcombe.wordpress.com/2009/01/26/summarizing-data-by-combinations-of-变量 -with -python /),这是R使用doBy库做一些非常相关的事情的例子(http://www.mail-archive.com/r-help@r-project.org/msg02643.html),但有一个简单的方法来做到这一点?甚至更好的是ggplot2库中是否有任何内容可以创建在某些变量中崩溃的图?

Jyo*_*rya 14

使用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
Run Code Online (Sandbox Code Playgroud)

为了更加灵活,请查看tapply功能和plyr包.

ggplot2使用stat_summary中总结

qplot(V1,V3,data=df,stat="summary",fun.y=mean,geom='bar',width=0.4)
Run Code Online (Sandbox Code Playgroud)

  • 使用`从`plyr`包ddply`一个例子来看看此相关的问题:http://stackoverflow.com/questions/2473659/r-what-are-the-best-functions-to-deal-with -concatenating和 - 平均值,在 (3认同)
  • `by`也不时派上用场. (2认同)

Blu*_*der 5

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

library(sqldf)
sqldf("SELECT Widget, avg(Energy) FROM yourDataFrame GROUP BY Widget")
Run Code Online (Sandbox Code Playgroud)