R 我如何通过一些变量来折叠一个数据帧,在其他变量之间取平均值

R 我如何通过一些变量来折叠一个数据帧,在其他变量之间取平均值,r,ggplot2,pivot-table,R,Ggplot2,Pivot Table,我需要通过一些变量来总结数据框架,忽略其他变量。这有时被称为崩溃。例如,如果我有这样一个数据帧: Widget Type Energy egg 1 20 egg 2 30 jap 3 50 jap 1 60 然后通过Widget进行折叠,并使用因变量Energy~Widget的能量,将产生 Widget Energy egg 25 jap 55 在Excel中,最接近的功能可能是“Pivot tables”,我已经在python()中解决了如何实现它,下面是一

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

Widget Type Energy  
egg 1 20  
egg 2 30  
jap 3 50  
jap 1 60
然后通过Widget进行折叠,并使用因变量Energy~Widget的能量,将产生

Widget Energy  
egg  25  
jap  55  

在Excel中,最接近的功能可能是“Pivot tables”,我已经在python()中解决了如何实现它,下面是一个使用doBy library做一些非常相关的事情()的示例,但是有没有一种简单的方法来实现上面的功能?更好的是,ggplot2库中是否内置了任何东西来创建跨某些变量折叠的绘图?

使用
聚合
来汇总一个因子:

> 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

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

library(sqldf)
sqldf("SELECT Widget, avg(Energy) FROM yourDataFrame GROUP BY Widget")

@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))

by
有时也会派上用场。例如使用
plyr
包中的
ddply
看看这个相关的问题:我想看看plyr的通用SAC联合框架(什么是pivot表),这是一个非常好的资源谢谢!我花了一段时间才弄明白ggplot2的统计数据。这就是我想要的,我想:ggplot(data=df,aes(x=Widget,y=Energy))+stat_summary(fun.y=mean,ymin=10,ymax=60)你真的想要长线吗?否则,
stat\u summary(fun.y=mean,geom='point')
只生成点。
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