簡體   English   中英

將平均值,總數和最大值放在r中的表中

[英]placing mean,total and max together in a table in 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時要高一些:我是一個純粹的新手。 不過會有一些幫助。 謝謝

查看表包,閱讀包裝內容的插圖,了解如何完全按照您的要求進行操作。

> 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

我建議簽出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)

您需要使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM