




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
示例應(yīng)用一(視頻教程):模擬產(chǎn)生統(tǒng)計專業(yè)同學(xué)的名單(學(xué)號區(qū)分),記錄數(shù)學(xué)分析、線性代數(shù)、概率統(tǒng)計三課成績第一步:錄入信息num=seq(10378001,10378100)num//產(chǎn)生100個元素x1=round(runif(100,min=80,max=100))//用runif產(chǎn)生100個均勻分布(取到每一個數(shù)值的可能性是相同的)的隨機(jī)數(shù)(帶小數(shù)),round四舍五入,從而組成向量x1x2=round(rnorm(100,mean=80,sd=7))//rnorm產(chǎn)生100個正態(tài)分布的隨機(jī)數(shù),均值是80,標(biāo)準(zhǔn)差是7x3=round(rnorm(100,mean=83,sd=18))〃同理產(chǎn)生x3,輸出結(jié)果后發(fā)現(xiàn)有些超過了100分(因為正態(tài)分布沒有上下限的概念,只有均值和標(biāo)準(zhǔn)差)x3[which(x3>100)]=100〃把超過100分的人的成績變成100,which找出超過100分的人的下標(biāo),再用下標(biāo)定位到相關(guān)元素并將其改為100第二步:合成數(shù)據(jù)框或用write.table保存到硬盤中x=data.frame(num,x1,x2,x3)〃用data.frame將4個變量合成一個數(shù)據(jù)框x中第三步:進(jìn)行計算使用mean(),colMeans(),apply()—下章介紹mean(x)[1]NA警告信息:Inmean.default(x):參數(shù)不是數(shù)值也不是邏輯值:回覆NA〃這里不能直接使用mean()函數(shù),只能對某一變量進(jìn)行求平均值,如mean(x1),mean(x2)等colMeans(x)〃對列進(jìn)行求均值,colMeans中的M必須大寫numx1x2x310378050.5090.4380.3981.66colMeans(x)[c("x1","x2","x3")]//指定顯示某列的均值x1x2x390.4380.3981.66apply(x,2,mean)//apply是對x這個數(shù)據(jù)框在行(或列)方向上做指定操作,1代表行方向,2代表列方向,綜上所述,就是在x這個數(shù)據(jù)框中在列的方向上求平均值numx1x2x310378050.5090.4380.3981.66第四步:使用apply求各科最高最低分apply(x,2,max)numx1x2x31037810010099100apply(x,2,min)numx1x2x310378001806546第五步:使用apply求出每人的總分apply(x[c("x1","x2","x3")],1,sum)〃在行的方向上求和,注意跟colMeans()的異同第六步:which.max找出總分最高的同學(xué)(找下標(biāo))
which.max(apply(x[c("x1","x2","x3")],1,sum))//求出總分最高的那個人在向量中的下標(biāo)(第74個)[1]74x$num[which.max(apply(x[c("x1","x2","x3")],1,sum))]//把下標(biāo)帶回到x,x$num代表在數(shù)據(jù)框x中取num列,再取下標(biāo)為72的元素,就能確定其學(xué)號是多少[1]10378074第七步:對x1進(jìn)行直方圖分析-繪制直方圖函數(shù)hist()hist(x$x1)第八步:探索各科成績的關(guān)聯(lián)關(guān)系-散點圖繪制函數(shù)plotHtsG^gramof疇sd第九步:列聯(lián)表分析-列聯(lián)函數(shù)table(),柱狀圖繪制函數(shù)barplot()pie(table(x$x1))pie(table(x$x1))table(x$x1)//統(tǒng)計每個分?jǐn)?shù)有多少人(眾數(shù))80818283848586878889909192939495969798255536473553682445119910052barplot(table(x$x1))餅圖:
S6,68823981909190SO■10094S6,68823981909190SO■1009495箱線圖:箱子的上下橫線為樣本的25%和75%分位數(shù),中間的橫線為樣本的中位數(shù)上下延伸的直線稱為尾線,尾線的盡頭為最高值和最低值boxplot(x$x1,x$x2,x$x3)boxplot(x[2:4],col=c("red","green","blue"),notch=T)#將三種顏色定義為變量,notch決定缺口水平放置的箱尾圖boxplot(x$x1,x$x2,x$x3,horizontal=T)TOC\o"1-5"\h\zR-I{||I"-I—-|||…■!--「IIiii507090*星相圖:R02a莖葉圖:>stem(x$x1)#因x1是由round(runif(100,min=80,max=100))生成出來,所以..為何出現(xiàn)000000?Thedecimalpointisatthe|80|000000082|000000000084|00000000086|0000000000088|0000000090|0000000092|0000000000000094|00000096|00000000098|0000000000000000100|00stem(x$x2)#但x2由round(rnorm(100,mean=80,sd=7))生成出來,就不會像x1那樣出現(xiàn)000000Thedecimalpointis1digit(s)totherightofthe||5689|0111122222233344444444|5555566777777788888999|0000111111222233344444|555566778888889999|00001223344|9QQ圖:(回歸分析:判斷部分樣本是否服從正太分布)num=seq(10378001,10378100)x1=round(runif(100,min=80,max=100))x2=round(rnorm(100,mean=80,sd=7))x3=round(rnorm(100,mean=83,sd=18))x3[which(x3>100)]=100x=data.frame(num,x1,x2,x3)stem(x$x1)qqnorm(x1)qqline(x1)qqnorm(x2)qqline(x2)qqnorm(x3)qqline(x3)應(yīng)用實例二:循環(huán)第1步:載入數(shù)據(jù)并查看數(shù)據(jù)類型,熟悉變量名>setwd("d:/RBook")>Owls=read.table(file="Owls.txt",header=TRUE)>names(Owls)#查看變量名>str(Owls)#查看數(shù)據(jù)框中每個變量的屬性第2步:繪制散點圖并添加標(biāo)簽,提取一個鳥巢的數(shù)據(jù),繪出同胞協(xié)商對到達(dá)到達(dá)時間的散點圖>unique(Owls$Nest)#提取一個鳥巢的數(shù)據(jù)前,先要弄清楚鳥巢的名字,即鳥巢名字的截面分別有哪些Owls.ATV=Owls[Owls$Nest=='AutavauxTV',]#定義一個名為Owls.ATV的數(shù)據(jù)框,使得該數(shù)據(jù)框中的行是原有數(shù)據(jù)框Owls中Nest向量名為AutavauxTV所在的行Owls.ATV#查看新的數(shù)據(jù)框中的值NestFoodTreatmentSexParentArrivalTimeSiblingNegotiationBroodSizeNegPerChickAutavauxTVDeprivedMale22.25450.8AutavauxTVSatiatedMale22.38050.0:JDOoo?°oooogLOonwcoo0」no>(QLImqu.91.s1062n#為了繪制散點圖,需提取Owls.ATV中ArrivalTime和NegPerChick向量>plot(x=Owls.ATV$ArrivalTime,#提取作為x軸的數(shù)據(jù)(為ArrivalTime)y=Owls.ATV$NegPerChick,#提取作為y軸的數(shù)據(jù)(為NegPerChick」no>(QLImqu.91.s1062n#左圖為變量ArrivalTime即鳥巢中到達(dá)時間對每次訪問協(xié)商行為NegPerChick的散點圖第3步:設(shè)計通用代碼同理,對第二個截面也就是第二個鳥巢Bochet作同樣的操作,只需將主標(biāo)題名稱、數(shù)據(jù)框名稱和實際的數(shù)據(jù)替換掉就可以了,>Owls.Bot=Owls[Owls$Nest=='Bochet',]°oc□cooo?coccao」no>cLI①q匚.2le405QN>plot(x=Owls.Bot$ArrivalTime,y=Owls.Bot$NegPerChick,xlab="ArrivalTime",ylab="Negotiationbehaviour",main="Bochet")#但是這是一個繁瑣的操作,通過設(shè)計一個通用的代碼有助于化簡這種繁瑣的輸入方式并減少出錯率,在這里,只需將變動的那一部分也就是」no>cLI①q匚.2le405QNNest.i="Bochet"#把要替換的部分定義為一個變量Owls.i=Owls[Owls$Nest==Nest.i,]#即使換了一個鳥巢也無需更改此處的變量>plot(x=Owls.i$ArrivalTime,y=Owls.i$NegPerChick,xlab="ArrivalTime",ylab="Negotiationbehaviour",main=Nest.i)第四步:將其輸出的圖像保存為jpg文件setwd("d:/RBook")Owls=read.table(file="Owls.txt",header=TRUE)Nest.i="Bochet"Owls.i=Owls[Owls$Nest==Nest.i,]YourFileName=paste(Nest.i,".jpg",sep="")#創(chuàng)建一個文件名,用paste命令來連接“Bochet”和“jpg”這兩個字符串,并且之間不加空格,paste命令的輸出就是一個可以被用來作為文件名的字符串,可以使用一個變量來存儲它并將其應(yīng)用到j(luò)peg命令中,使用YourFileName作為文件名,R就將介于jpeg和dev.off命令之間的繪圖結(jié)果存儲到這個文件中>jpeg(file=YourFileName)#打開一個jpeg文件>plot(x=Owls.i$ArrivalTime,y=Owls.i$NegPerChick,xlab="ArrivalTime",ylab="Negotiationbehaviour",main=Nest.i)#在這個文件中繪制圖像dev.off()#將jpeg文件關(guān)閉,只有在完成繪圖工作后才會生成一個.jpeg文件nulldevice1第五步:使用loop命令構(gòu)造循環(huán)在完成上一步后,仍需將變量名Nest.i更改27次,這將由loop命令完成,在上一步驟的代碼中加入for循環(huán)setwd("d:/RBook")Owls=read.table(file="Owls.txt",header=TRUE)#從Rbook文件夾里讀取數(shù)據(jù)AllNests=unique(Owls$Nest)#使用unique函數(shù)確定Owls中Nest向量中的唯一值,并把這些唯一值存放到一個新的名為AllNests的向量中作為生成.jpeg文件的文件名for(iin1:27){#在鍵入“{”后回車再鍵入往下的代碼,光標(biāo)就會自動顯示為+號,表示代碼還沒結(jié)束繼續(xù)輸入+setwd("d:/RBook/Graphs6.2")#指定所要輸出的文件夾名稱,這里是Graphs6.2文件夾#這里就不像上面那樣重新定義Nest.i=AllNests[i]來替代原來的Nest.i="Bochet"而是直接用AllNests[i]了,令A(yù)llNests[i]與第i個鳥巢的名字是等價的+Owls.i=Owls[Owls$Nest==AllNests[il.]#以下代碼在前面的步驟中已討論+YourFileName=paste(AllNests[i].".jpg",sep="")#生成一個名為YourFileName后加.jpeg的文件+jpeg(file=YourFileName)#打開這個.jpeg文件,并作圖+plot(x=Owls.i$ArrivalTime,y=Owls.i$NegPerChick,xlab="ArrivalTime",ylab="Negotiationbehaviour",main=AllNests[i])+dev.off()+}#在Graphs6.2文件夾中就可以得到27個.jpeg文件了G田+dev.off()+}#在Graphs6.2文件夾中就可以得到27個.jpeg文件了G田ph話.2t、.屯凸■電駐r放住MM口。?BBooi■好侃護(hù)初佻Mb汕柑pflLwwjosMumtjpgPdjrreiPBXliyjpv*商*w上阪13榊旳曲俺知EHdblOE.JpQP9&xnei|pQ吹1刪>■ZiaMTBt?話怎?jflE*巨芒哄W£.圉片-5traJVTfc*■JiH齊嗣示例應(yīng)用三:使用ifelse句型來避免檢查大量的if指令第1步:載入并評估數(shù)據(jù)>setwd("d:/RBook")>Benthic=read.table(file="RIKZ.txt",header=TRUE)>Species=Benthic[,2:76]#重新選取第2到76列的物種數(shù)據(jù)>n=dim(Species)>n[1]4575#查看數(shù)據(jù)框Spcies的行數(shù)和列數(shù)第2步:每個站點的生物總量:單純統(tǒng)計!sum(Species[1,],na.rm=TRUE)[1]143#通過Spcies[1,]來獲取第一行的所有列即站點1的全部生物數(shù)量之和為了避免將這個命令重復(fù)寫45遍,因此構(gòu)造一個循環(huán)來計算每個站點的總數(shù)TA=vector(length=n[1])#必須首先用vecto指令將TA定義為一個長度為45的向量,否則TA[i]將會報錯for(iin1:n[1]){#需確定循環(huán)中的變量i必須在1到45之間,比如TA[46]就是無定義的+TA[i]=sum(Species[i,],na.rm=TRUE)#像上述那樣獲取每一行的總數(shù)并將其賦值到TA[沖+}TA[1]143527019967944241192211483514738101477384864229[24]04333346746571110235269927850193423011不需要構(gòu)造循環(huán)體,直接使用rowSums命令計算每一行的和TA=rowSums(Species,na.rm=TRUE)TA#同樣能得到相同的結(jié)果第3步:每個站點的豐富度(所擁有的物種數(shù)量):判斷+統(tǒng)計01數(shù)量!由sum(Species[1,],na.rm=TRUE)可以得知某個站點的全部生物數(shù)量的總和(站點一的所有列相加)現(xiàn)在,想統(tǒng)計站點1的物種數(shù)量sum(Species[1,]>0,na.rm=TRUE)[1]11#在站點1中有11個不同的物種sum#Species[1,]>0為一個判斷型的語句,生成了一個長度為75的布爾向量(元素就是T和F),當(dāng)加入“>0”后,函數(shù)不再是統(tǒng)計站點1所有物種數(shù)量的總和,而是將TRUE轉(zhuǎn)化為1,FALSE轉(zhuǎn)化為0,然后對其進(jìn)行相加為了計算每個站點的豐富度,類似地,同樣構(gòu)造一個循環(huán)sumRichness=vector(length=n[1])for(iin1:n[1]){+Richness[i]=sum(Species[i,]>0,na.rm=TRUE)+}Richness[1]111013111089819176143313314322606541642[32]113435750711302#同樣也可以使用rowSums,同樣能得出相同的結(jié)果Richness=rowSums(Species>0,na.rm=TRUE)Richness第4步:每個站點的香農(nóng)指數(shù)>RS=rowSums(Species,na.rm=TRUE)#得到每一個站點的物種數(shù)量>prop=Species/RS#將Species中的每個元素除以RS并將結(jié)果存儲到prop中>prop#數(shù)據(jù)量較大在此不列出>H=-rowSums(prop*log10(prop),na.rm=TRUE)>H[1]0.761906390.720972240.846735240.530839260.744139390.125131640.401920060.29160667第5步:結(jié)合代碼并將代碼置入到函數(shù)中通過一個選擇,把之前的所得到的三種指數(shù)的代碼結(jié)合起來,基于rowSums函數(shù)Index.function=function(Species,choice){#定義一個可選擇的函數(shù),其中if(choice=="TA"){Index=rowSums(Species,na.rm=TRUE)}if(choice=="Richness"){Index=rowSums(Species>0,na.rm=TRUE)}if(choice=="H"){RS=rowSums(Species,na.rm=TRUE)prop=Species/RSlndex=-rowSums(prop*log10(prop),na.rm=TRUE)}#跟之前的一樣,將三段代碼融到函數(shù)中,并賦到Index中l(wèi)ist(
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024-2025學(xué)年度教育教學(xué)分管副校長工作總結(jié):腳踏實地管教學(xué)仰望星空育人心
- 線性代數(shù)試題及答案
- 物理相互運動試題及答案
- 2025年河南省駐馬店市上蔡縣中考三模歷史試題(含答案)
- 加強(qiáng)工程設(shè)計企業(yè)的客戶關(guān)系管理
- 2025挖掘機(jī)采購合同范本
- 2025年北京市商業(yè)店鋪裝修工程施工合同文件范本
- 2025年中國水凈化器行業(yè)市場前景預(yù)測及投資價值評估分析報告
- PARP7-IN-23-生命科學(xué)試劑-MCE
- L-645164-生命科學(xué)試劑-MCE
- 2025年河北省中考乾坤押題卷數(shù)學(xué)試卷B及答案
- 2025安徽淮北源淮實業(yè)有限公司招聘5人筆試備考試題及答案解析
- 2025至2030中國船用甲板機(jī)械市場供需平衡調(diào)查與前景預(yù)測研究報告
- 2025年國際安全與反恐研究職業(yè)資格考試試題及答案
- 期末真題匯編 12 非連續(xù)性文本閱讀(含答案)-七年級語文下冊(統(tǒng)編版2024)
- GB/T 45551-2025蜜蜂生產(chǎn)性能測定技術(shù)規(guī)范
- 2025年中考語文二輪復(fù)習(xí):字音 練習(xí)題(含答案)
- 港口上崗證考試試題及答案
- 臨床護(hù)理敏感質(zhì)量指標(biāo)解讀
- 中藥種植施工方案
- 江蘇省南通市如皋市八校2025屆初三下學(xué)期教育質(zhì)量調(diào)研(二模)化學(xué)試題含解析
評論
0/150
提交評論