将平均值,总数和最大值放在r中的表中

时间:2013-08-31 22:28:40

标签: r

我有一些简单的命令查看变量的总数,平均值和最大值,而另一个变量是指定的值:

sum(data[data$var1==1,]$var2)
mean(data[data$var1==1,]$var2)
max(data[data$var1==1,]$var2)

有没有办法把它放到一个漂亮的表中,这并不意味着我的输出是分散的行?为了使它更复杂,将围绕var1的不同值(在我的情况下为1到5)构建表,因此我可以为var1的每个值得到var 2的mean,max和total。

这可能有点高于我现在和R在一起的地方:我是一个纯粹的新手。不过会有一些帮助。 感谢

3 个答案:

答案 0 :(得分:4)

查看表格包,阅读包装内容的插图,了解如何完全按照您的要求行事。

> tabular( ( factor(cyl) + 1) ~ mpg * (sum + mean + max), data=mtcars )

             mpg             
 factor(cyl) sum   mean  max 
 4           293.3 26.66 33.9
 6           138.2 19.74 21.4
 8           211.4 15.10 19.2
 All         642.9 20.09 33.9

答案 1 :(得分:2)

我建议查看data.table包,这类似于数据框的增强版本。它做得很好(如果你有很多数据的话,很快就是这样的摘要)。

library(data.table)
as.data.table(mtcars)[, list(sum=sum(mpg), mean=mean(mpg), max=max(mpg)),
                      by=cyl][order(cyl)]
#   cyl   sum     mean  max
#1:   4 293.3 26.66364 33.9
#2:   6 138.2 19.74286 21.4
#3:   8 211.4 15.10000 19.2

如果您想通过多个变量进行汇总,只需使用by=list(cyl,vs,otherColumnNamesHere)之类的内容。

答案 2 :(得分:1)

您需要使用cbind

cbind(sum(data[data$var1==1,]$var2),mean(data[data$var1==1,]$var2),max(data[data$var1==1,]$var2))

使用mtcars数据的示例

mydata<-mtcars  
  l<-cbind(sum(mydata[mydata$cyl==4,]$mpg),mean(mydata[mydata$cyl==4,]$mpg),max(mydata[mydata$cyl==4,]$mpg))
l<-data.frame(l)
names(l)<-c("sum","mean","max")
> l
    sum     mean  max
1 293.3 26.66364 33.9

plyr包中有一个ddply函数可以为var1的每个类别(此处为cyl)执行所有操作

library(plyr)
ddply(mydata,.(cyl),summarize, sum=sum(mpg),mean=mean(mpg), max=max(mpg))

 ddply(mydata,.(cyl),summarize, sum=sum(mpg),mean=mean(mpg), max=max(mpg))
  cyl   sum     mean  max
1   4 293.3 26.66364 33.9
2   6 138.2 19.74286 21.4
3   8 211.4 15.10000 19.2