R語言-如何按照某一列分組求均值

主要介紹tapply函數:

每次隻能求一列

aggregate函數:每次按組可以求多列

tapply(shuju[shuju[,3],shuju$year,mean)

以年份為組,求shuju表第三列的均值

aggregate(shuju[,3:4],list(shuju[,2]),mean)

以年份為均值,求數據表第三列,第四列的均值

補充:R語言按某一列分類求均值+繪圖總結

看代碼吧~

D<-aggregate(.~K,data=data1,mean)  #求數據集data1按照K分類後所有列的均值
rm(list=ls())   #刪除所有對象
attach()  #鎖定某個對象
with(mtcars,{print(summary(mpg)),plot(mpg,disp)}  #with作用等同attach
grades<-read.table('student.csv',header=TRUE,row.namens='studentid',sep=',')
#讀表

dev.new()  #開啟新圖框
dev.off()  #關閉圖框

dose<-c(20,30,40,50,60)
drugA<-c(16,20,25,35,42)
drugB<-c(20,35,46,61,70)
opar<-par(no.readonlyTRUE)
par(pin=c(2,3))   #圖片尺寸
par(cex.axis=.75,font.axis=3)
par(lwd=2,cex=1.5)
plot(dose,drugA,type='b',pch=19,lty=2,col='red')
plot(dose,drug,type='b',pch=23,lty=6,col='blue',bg='green')
par(opar)
plot(dose,drugA,type='b',col='red',
lty=2,pch=2,lwd=2,main='clain',
sub='this is',xlab='dosa',ylab='drug',
xlim=c(0,60),ylim=c(0,70))

圖例

#legend(location,title,legend)

dose<-c(20,30,40,50,60)
drugA<-seq(1,10,2)
drugB<-seq(2,20,2)
opar<-par(no.readonly=TRUE)
par(lwd=2,cex=1.5,font.lab=2)
plot(dose,drugA,type='b',pch=15,lty=1,
col='blue',ylim=c(0,60),main='that',
xlab='drug',ylab='resopme')
lines(dose,drugB,type='b',pch=17,lty=2,col='blue')

legend('topleft',inset=0.05,title='main',c('A','B'),lty=c(1,2),
pch=c(15,17),col=c('red','blue'))
par(opar)

畫2*2圖:

attach(mtcars)
opar<-par(no.readonly=TRUE)
par(mfrow=c(2,2))
plot(wt,mpg,main='11')
plot(wt,disp,main='xx')
hist(wt,main='dd')
boxplot(wt,main='ds')
par(opar)
detach(mtcars)

畫3*1圖:

attach(mtacars)
opar<-par(no.readonly=TRUE)
par(mfrow=c(3,1))
hist(wt)
hist(disp)
hist(mpg)
par(opar)
detach(mtcars)

第一幅圖在第一行,第二三副圖在第二行:

attach(mtcars)
opar<-par(no.readonly=TRUE)
layout(matrix(c(1,1,2,3)2,2,byrow=TRUE))
hist(wt)
hist(mpg)
hist(disp)
detach(macars)

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。