版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
R軟件與數(shù)據(jù)分析及繪圖Tel:85280259QQ:27614943QQ群:
345276262E-mail:27614943@
林元震華南農(nóng)業(yè)大學(xué)林學(xué)院全校選修課第三講數(shù)據(jù)操作內(nèi)容提要變量創(chuàng)建與刪除變量重命名缺失值數(shù)據(jù)類型轉(zhuǎn)化數(shù)據(jù)排序數(shù)據(jù)合并數(shù)據(jù)子集提取數(shù)據(jù)重構(gòu)常用函數(shù)數(shù)據(jù)探索常見循環(huán)自編函數(shù)3.1變量創(chuàng)建與刪除mydata<-data.frame(x1=c(2,2,6,4), x2=c(3,4,2,8))#方法一mydata$sum<-mydata$x1+mydata$x2mydata$mean<-(mydata$x1+mydata$x2)/2#方法二mydata<-transform(mydata, sum=x1+x2, mean=(x1+x2)/2)#變量刪除mydata$mean<-NULL3.2變量的重命名df<-mydata第一種方法:調(diào)用編輯器重命名fix(df)第二種方法:使用函數(shù)names()重命名names(df)names(df)[1:3]<-c(“A”,”B”,”C”)3.3缺失值的處理缺失值:NA(NotAvailable,不可用)不可能出現(xiàn)的值:NaN(NotaNumber,非數(shù)值)函數(shù)is.na()可檢測(cè)缺失值是否存在。例子x<-c(1:3,5,7,NA,9)sum(x)#結(jié)果為NAsum(x,na.rm=T)#結(jié)果為27缺失值圖形化library(VIM)matrixplot(sleep)matrixplot()函數(shù)對(duì)數(shù)值型數(shù)據(jù)轉(zhuǎn)化到[0,1]區(qū)間,并用灰度來(lái)表示大?。簻\色表示值小,深色表示值大。缺失值默認(rèn)是紅色。
3.4數(shù)據(jù)類型的轉(zhuǎn)換數(shù)據(jù)轉(zhuǎn)換例子Rep<-c(1:6)#Rep賦值is.numeric(Rep)#數(shù)值型判斷:真is.factor(Rep)#因子判斷:假Rep<-as.factor(Rep)#轉(zhuǎn)換為因子is.factor(Rep)
Rep<-c(1:6)
#因子判斷:真3.5數(shù)據(jù)的排序R自帶的order()函數(shù)plyr程序包的arrange()函數(shù)#按Spacing、Fam、rank先后依次排序#R自帶的order()排序df<-df[order(df$Spacing,df$Fam,df$rank.dj),]#plyr程序包的arrange()函數(shù)排序library(plyr)df<-arrange(df,Spacing,Fam,rank.dj)
排序例子#創(chuàng)建數(shù)據(jù)框df<-data.frame(id=1:4,weight=c(20,27,24,22),size=c("small","large","medium","large"))#idweightsize#120small#227large#324medium#422large#R自帶的order()函數(shù)df[order(df$weight),]#plyr包的arrange()函數(shù)library(plyr)arrange(df,weight)arrange(df,size,weight)arrange(df,size,-weight)setwd("D:\\")stu.df<-read.table(file="stu.data.csv",header=T,sep=',')讀入數(shù)據(jù)stu.data.csv,數(shù)據(jù)集命名為stu.df;創(chuàng)建一個(gè)新變量height2,height2以m為單位,與height等值;創(chuàng)建新變量armlegL,armlegL=armL+legL,然后再刪除變量armlegL;將height2的第2,5,7,10個(gè)值刪除;判斷grade的數(shù)據(jù)類型,將其轉(zhuǎn)換為因子;對(duì)數(shù)據(jù)集按年齡(升序)、體重(降序)排序。setwd("D:\\")stu.df<-read.table(file="stu.data.csv",header=T,sep=',')df<-stu.dfnames(df)df$height2<-df$height/100df$armlegL<-df$arml+df$legldf$armlegL<-NULL
df$height2[c(2,5,7,10)]<-NAis.numeric(df$Grade)
df$Grade<-as.factor(df$Grade)is.factor(df$Grade)library(plyr)df2<-arrange(df,age,-weight)3.6數(shù)據(jù)集的合并3.6.1列合并#共有變量:IDtotal<-merge(dataA,dataB,by=”ID”)#共有變量:ID、Countrytotal<-merge(dataA,dataB,by=c(”ID”,“Country”))#含有一樣的行數(shù),而且以相同順序排序。total<-cbind(dataA,dataB)列合并例子#創(chuàng)建數(shù)據(jù)框dataAdataA<-read.table(header=T,text='storyidtitle1lions2tigers3bears')#創(chuàng)建數(shù)據(jù)框dataBdataB<-read.table(header=T,text='subjectstoryidrating116.7124.5223.3215.2')#合并數(shù)據(jù)框dataA,dataBmerge(dataA,dataB,"storyid")#將dataA的stroyid重命名為idcolnames(dataA)[,1]<-c(“Id”)merge(x=dataA,y=dataB,by.x=“id”,by.y=“storyid“)3.6.2行合并total<-rbind(dataA,dataB)注意:dataA與dataB需含有一樣的變量,但排列的順序可以不同。行合并例子dfA<-data.frame(Subject=c(1,1,2,2),Response=c("X","X","X","X"))dfB<-data.frame(Subject=c(1,2,3),Response=c("Z","Y","Z"))df<-rbind(dfA,dfB)dfA$Coder<-"A"dfB$Coder<-"B“df<-rbind(dfA,dfB)3.7數(shù)據(jù)子集的提取3.7.1根據(jù)位置選取子集使用方法如下:df[m1,] 表示返回第m1行的數(shù)據(jù)df[c(m1,m2,...,mj),] 表示返回由第m1,m2,..mj行組成的數(shù)據(jù)框df[,n1] 表示返回第n1列的數(shù)據(jù)df[,c(n1,n2,...,nk)] 表示返回由第n1,n2,..nk列組成的數(shù)據(jù)框例子###創(chuàng)建數(shù)據(jù)框df<-read.table(header=T,text='subjectsexsize1M72F63F94M11')###以行取子集df[1,]df[c(1,3),]###以列取子集df[,1]df[,c(1,3)]###以行列組合取子集df[c(1,3),c(1,3)]3.7.2根據(jù)列名選取子集使用方法如下:df[,“name1”]表示返回列名為name1的數(shù)據(jù)df[,c(“name1”,“name2”,...,“namek”)]表示返回由多個(gè)列組成的數(shù)據(jù)框df[,"size"]##返回?cái)?shù)據(jù)df["size"]##返回?cái)?shù)據(jù)框df[,c("size","sex")]3.7.3使用subset()函數(shù)subset(df,select=c(name1,name2,...,namek))表示返回由多個(gè)列組成的數(shù)據(jù)框subset(df,select=subject)subset(df,subject<3)subset(df,subject<3,select=-subject)subset(df,subject<3&sex=="M")3.8數(shù)據(jù)的整合與重構(gòu)3.8.1數(shù)據(jù)轉(zhuǎn)置
使用t()函數(shù)即可對(duì)一個(gè)矩陣或數(shù)據(jù)框?qū)崿F(xiàn)行和列數(shù)據(jù)的轉(zhuǎn)置。df<-matrix(c(37,150,49,100,23,57),nr=2, dimnames=list(c("D","UD"), c("A","B","C")))t.df<-t(df)3.8.2數(shù)據(jù)整合aggregate(df,by,FUN)其中,df是數(shù)據(jù)框,by是變量名組成的列表,F(xiàn)UN是函數(shù),用以計(jì)算觀測(cè)值。3.8.3使用reshape2包library(reshape2)#####創(chuàng)建數(shù)據(jù)集#########set.seed(1234)df<-array(sample(8),dim=c(2,2,2))df<-melt(df,varnames=c("A","B","C"),="ht1")df$ht2<-sample(1:10,8)####數(shù)據(jù)融合####df<-melt(df,id=c("A","B","C"))###數(shù)據(jù)重構(gòu)####dcast(df,A~variable,mean)dcast(df,A+B~variable)3.9處理數(shù)據(jù)常用的函數(shù)練習(xí)二讀入stu.data.csv,數(shù)據(jù)集命名為stu.df;構(gòu)建df1A,使其含有stu.df的前20行組成的數(shù)據(jù)框;stu.df從20行后的數(shù)據(jù)賦給df1B;合并df1A、df1B為df1;構(gòu)建df2A,使其含有stu.df的前6個(gè)變量組成的數(shù)據(jù)框;將stu.df的第1個(gè)變量和從第6個(gè)變量以后的數(shù)據(jù)組成df2B;合并df2A、df2B為df2;從stu.df中提取出age>20、grade<3的所有數(shù)據(jù);計(jì)算體重weight的平均值,找出身高h(yuǎn)eight最大值。3.10數(shù)據(jù)探索3.10.1數(shù)據(jù)結(jié)構(gòu)查看dim(iris) #數(shù)據(jù)集的維度,有多少行多少列?names(iris)#數(shù)據(jù)有哪些列?str(iris) #數(shù)據(jù)的結(jié)構(gòu)如何?iris[1:5,] #查看數(shù)據(jù)的前5行head(iris)#查看數(shù)據(jù)的前6行tail(iris) #查看數(shù)據(jù)的最后6行3.10.2查看單個(gè)變量#查看數(shù)據(jù)集中所有變量的關(guān)鍵數(shù)據(jù)summary(iris)
#單個(gè)變量的1%、25%、50%、75%、100%分位數(shù)quantile(iris$Sepal.Length)#返回均值、中位數(shù)和數(shù)據(jù)的范圍mean(),median(),range()table(iris$Species)#統(tǒng)計(jì)每個(gè)類別的頻數(shù)pie(table(iris$Species))#畫出每個(gè)類別比例的餅圖3.10.3查看多個(gè)變量#查看變量之間的相關(guān)性cor(iris[,1:4])#針對(duì)每個(gè)Species水平繪制Sepal.Length的盒形圖boxplot(Sepal.Length~Species,data=iris)#繪制任意兩個(gè)矩陣之間的散點(diǎn)圖,及變量之間的相關(guān)性pairs(iris)3.10.4其他查看方法#三維散點(diǎn)圖library(scatterplot3d)scatterplot3d(iris$Petal.Width,iris$Sepal.Length,iris$Sepal.Width)#用熱圖可視化樣本之間的相似性distMatrix<-as.matrix(dist(iris[,1:4]))heatmap(distMatrix)#繪制Sepal.Length和Sepal.Width的散點(diǎn)圖library(ggplot2)qplot(Sepal.Length,Sepal.Width,data=iris,facets=Species~.)3.10.5保存統(tǒng)計(jì)圖形第一種方法,保存為pdf文件#saveasaPDFfilepdf("myPlot1.pdf")x<-1:50plot(x,log(x))dev.off()第二種方法,保存為圖形文件#Saveasafigurefilepng("myPlot2.png")x<-5:20plot(x,sin(x))dev.off()3.11循環(huán)控制和條件操作3.11.1條件語(yǔ)句if(conditon){expr1}else{expr2}如果condition條件為真,則執(zhí)行expr1,否則執(zhí)行expr2。例子#找出100以內(nèi)的質(zhì)數(shù)x<-1:100y<-rep(T,100)for(iin3:100){
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 跨學(xué)科視角下的小學(xué)生綜合計(jì)算能力培養(yǎng)策略研究總結(jié)
- DB6528T 210-2024板椒聯(lián)合收獲機(jī)作業(yè)技術(shù)規(guī)程
- DB6103T 82-2025夏大豆擴(kuò)行縮株栽培技術(shù)規(guī)范
- 專業(yè)常年法律顧問(wèn)聘任合同模板
- 個(gè)人投資入股合作合同協(xié)議
- 專利許可合同
- 買賣合同終止及賠償協(xié)議
- 專兼職律師服務(wù)合同格式范本
- 個(gè)人咖啡店轉(zhuǎn)讓合同范本
- 產(chǎn)品設(shè)計(jì)與制造合同范本
- 法醫(yī)病理學(xué)課件
- 職代會(huì)提案征集表
- 介紹uppc技術(shù)特點(diǎn)
- 物業(yè)工程工作分配及人員調(diào)配方案
- 《諫逐客書》理解性默寫(帶答案)最詳細(xì)
- 《黑駿馬》讀書筆記思維導(dǎo)圖
- 2023年物理會(huì)考真題貴州省普通高中學(xué)業(yè)水平考試試卷
- 盤扣式懸挑腳手架專項(xiàng)施工方案
- 勞動(dòng)防護(hù)用品知識(shí)考試試題(含答案)
- 高中教師業(yè)務(wù)知識(shí)考試 數(shù)學(xué)試題及答案
- GB/T 9290-2008表面活性劑工業(yè)乙氧基化脂肪胺分析方法
評(píng)論
0/150
提交評(píng)論