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。如有錯誤或未考慮完全的地方,望不吝賜教。
推薦閱讀:
- None Found