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