[英]How to create a row in a table for (Range) to include (Min:Max) together in 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.