R語言基礎(chǔ)培訓(xùn)第一講R語言入門課件_第1頁
R語言基礎(chǔ)培訓(xùn)第一講R語言入門課件_第2頁
R語言基礎(chǔ)培訓(xùn)第一講R語言入門課件_第3頁
R語言基礎(chǔ)培訓(xùn)第一講R語言入門課件_第4頁
R語言基礎(chǔ)培訓(xùn)第一講R語言入門課件_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

R語言入門R語言入門2什么是R?R是一種統(tǒng)計繪圖語言,也指實現(xiàn)該語言的軟件。TheRProjectforStatisticalComputing

2什么是R?R是一種統(tǒng)計繪圖語言,也指實現(xiàn)該語言的軟件。Th3為什么要學(xué)會R?3為什么要學(xué)會R?SPSS(StatisticalPackagefortheSocialSciences)的發(fā)明者諾曼·奈伊(NormanNie)說:“沒有什么統(tǒng)計概念是R不能表現(xiàn)的。SPSS(StatisticalPackagefort5R簡史R語言是從S統(tǒng)計繪圖語言演變而來,可看作S的"方言"。

S語言上世紀(jì)70年代誕生于貝爾實驗室,由約翰·錢伯斯(JohnChambers)開發(fā)?;赟語言開發(fā)的商業(yè)軟件Splus,可以方便的編寫函數(shù)、建立模型,具有良好的擴展性,在國外學(xué)術(shù)界應(yīng)用很廣,對SPSS

和SAS

有力沖擊。

1995年由新西蘭Auckland大學(xué)統(tǒng)計系的羅斯·艾卡(RossIhaka)和羅伯特·簡特曼(RobertGentleman),基于S語言的源代碼,編寫了一能執(zhí)行S語言的軟件,并將該軟件的源代碼全部公開,這就是R軟件,其命令統(tǒng)稱為R語言。5R簡史R語言是從S統(tǒng)計繪圖語言演變R的起源RobertGentlemanRossIhaka自1997年以后,有一個核心團隊,這一團隊能對R的源代碼進行修改。R的起源RobertGentlemanRossIhak7R的優(yōu)點多領(lǐng)域的統(tǒng)計資源目前在R網(wǎng)站上約有8230個程序包,涵蓋了基礎(chǔ)統(tǒng)計學(xué)、社會學(xué)、經(jīng)濟學(xué)、生態(tài)學(xué)、空間分析、系統(tǒng)發(fā)育分析、生物信息學(xué)等諸多方面。免費開源統(tǒng)計分析能力突出作圖功能強大拓展與開發(fā)能力強7R的優(yōu)點多領(lǐng)域的統(tǒng)計資源8R的缺點用戶需要對命令熟悉與代碼打交道,需要記住常用命令。幫助系統(tǒng)均為英文占用內(nèi)存所有的數(shù)據(jù)處理在內(nèi)存中進行,不適于處理超大規(guī)模的數(shù)據(jù)。運行速度稍慢即時編譯,約相當(dāng)于C語言的1/20。8R的缺點用戶需要對命令熟悉如何學(xué)習(xí)R?熟悉語法訓(xùn)練思維善于求助熟能生巧保持興趣…NevertoolateandtoooldtolearnR…如何學(xué)習(xí)R?熟悉語法Nevertoolateandt101011Windows下載和安裝R下載完成后,雙擊R-3.2.4-win.exe

開始安裝。一直點擊下一步,各選項默認,語言建議選英文。11Windows下載和安裝R12圖4R登陸界面(Windows版)路徑:開始>所有程序>R3.2.4菜單欄快捷按鈕控制臺光標(biāo):等待輸入12圖4R登陸界面(Windows版)菜單欄快捷按鈕控制13R圖形界面:Rstudio13R圖形界面:RstudioRStudio有以下幾大優(yōu)點:代碼字體高亮,代碼完整性智能識別、自動縮進;可直接執(zhí)行R程序代碼;可運行多個R程序;可直接瀏覽工作表和數(shù)據(jù);可隨意縮放繪制的圖形,并且有多種輸出格式;整合R幫助和R使用文檔;可查看R命令的運行記錄。RStudio有以下幾大優(yōu)點:代碼字體高亮,代碼完整性智能1515R語言基礎(chǔ)培訓(xùn)第一講R語言入門17R程序包(RPackages)程序包是什么?

R程序包是多個函數(shù)的集合,具有詳細的說明和示例。

Window下的R程序包是經(jīng)過編譯的zip包。每個程序包包含R函數(shù)、數(shù)據(jù)、幫助文件、描述文件等。為什么要安裝程序包?

R程序包是R功能擴展,特定的分析功能,需要用相應(yīng)的程序包實現(xiàn)。例如:系統(tǒng)發(fā)育分析,常用到ape程序包,群落生態(tài)學(xué)vegan包等。17R程序包(RPackages)程序包是什么?18install.views("Environmetrics")?18install.views("Environmetric19三種平臺上的程序包19三種平臺上的程序包20R程序包在CRAN提供了每個包的源代碼和編譯好的程序包以vegan包為例,CRAN提供了:Packagesource:vegan_1.17-2.tar.gzMacOSXbinary:vegan_1.17-2.tgzWindowsbinary:vegan_1.17-2.zipReferencemanual:vegan.pdfWindow下程序包為zip文件,安裝時不要解壓縮。20R程序包在CRAN提供了每個包的源代碼和編譯好的程序包21安裝程序包的方法1菜單安裝在聯(lián)網(wǎng)的條件下,按菜單欄【程序包】下拉選擇【安裝程序包】,選擇所需的程序包進行實時安裝;2聯(lián)網(wǎng)命令安裝例如:要安裝vegan包,在控制臺中輸入

install.packages("vegan")3本地安裝路徑:Packages>installpackagesfromlocalfiles選擇本地磁盤上存儲zip包的文件夾。4腳本安裝在聯(lián)網(wǎng)的條件下,請運行Rpackages.install.R程序,即可完成本培訓(xùn)所需的程序包安裝。21安裝程序包的方法1菜單安裝22程序包使用與更新程序包的中函數(shù),都要先導(dǎo)入,再使用,因此導(dǎo)入程序包是第一步。在控制臺中輸入如下命令:library(lattice)library(ggplot2)所有程序包的更新update.packages()注意:R命令對大小寫敏感,因此使用命令方式安裝和載入程序包時應(yīng)特別注意。22程序包使用與更新程序包的中函數(shù),都要先導(dǎo)入,再使用,因此23查看程序包幫助文件vegan程序包內(nèi)部都有哪些函數(shù)?分別有什么功能?查詢程序包內(nèi)容最常用的方法:1菜單幫助>Html幫助2查看pdf幫助文檔23查看程序包幫助文件vegan程序包內(nèi)部都有哪些函數(shù)?分24查看函數(shù)的幫助文件函數(shù)的默認值是什么?怎么使用?使用時需要注意什么問題?需要查詢函數(shù)的幫助。1?t.test2RGui>Help>Htmlhelp3apropos("t.test")4help("t.test")5help.search("t.test")6查看R包pdf手冊24查看函數(shù)的幫助文件函數(shù)的默認值是什么?怎么使用?使用252526幫助文件的內(nèi)容t.test{stats}#函數(shù)名及所在包

FittingLinearModels#標(biāo)題Description#函數(shù)描述Usage#默認選項Arguments#參數(shù)Details#詳情Author(s)#作者References#參考文獻Examples#舉例26幫助文件的內(nèi)容t.test{stats}27練習(xí)一安裝R并導(dǎo)入程序包1.安裝R和Rstudio軟件、熟悉菜單2.本地安裝程序包:vegan3.調(diào)用程序包,查看程序包的幫助library(vegan)查找vegan包中cca函數(shù)的幫助輸入?cca(試試"??cca")將其中的Example粘貼到控制臺中,查看運行的結(jié)果。27練習(xí)一安裝R并導(dǎo)入程序包1.安裝R和RstudioR數(shù)據(jù)集創(chuàng)建數(shù)據(jù)創(chuàng)建

向量,數(shù)組,矩陣,數(shù)據(jù)框,列表,因子數(shù)據(jù)輸入

scan(),csv文件,excel文件,sas數(shù)據(jù)…數(shù)據(jù)存儲

write.table(),write.csv(),save()R數(shù)據(jù)集創(chuàng)建數(shù)據(jù)創(chuàng)建向量vector概念:用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組。

例子:

a<-c(1,2,5,3,6,-2,4)#數(shù)值型向量b<-c("one","two","three")#字符型向量c<-c(TRUE,TRUE,TRUE)#邏輯型向量

注意:單個向量中的數(shù)據(jù)必須是相同的類型(數(shù)值型、字符型或邏輯型)。向量vector概念:用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一R語言基礎(chǔ)培訓(xùn)第一講R語言入門創(chuàng)建重復(fù)的向量>rep(2:5,2)#等價于rep(2:5,times=2)[1]23452345

>rep(2:5,rep(2,4))[1]22334455

>rep(1:3,times=4,each=2)[1]112233112233112233112233>paste(c("X","Y"),1:10,sep="-")#不規(guī)則[1]"X-1""Y-2""X-3""Y-4""X-5""Y-6""X-7""Y-8""X-9""Y-10">rep(factor(LETTERS[1:3]),5)[1]ABCABCABCABCABCLevels:ABC創(chuàng)建重復(fù)的向量>rep(2:5,2)向量中元素的訪問>a<-c(1,2,5,3,6,-2,4)#向量a中第三個數(shù)據(jù)>a[3][1]5

#向量a中第一、三、五個數(shù)據(jù)>a[c(1,3,5)][1]156#向量a中第二到第六個數(shù)據(jù)>a[2:6][1]2536-2#向量a中數(shù)值大于3的所有數(shù)據(jù)>a[a>3][1]564

#去掉第一個值>a[-1][1]2536-24#去掉前三個值>a[-1:-3][1]36-24向量中元素的訪問>a<-c(1,2,5,3,6,矩陣matrix概念:一個二維數(shù)組#創(chuàng)建一個2×2的矩陣>matrix(1:4,nrow=2,ncol=2)

[,1][,2][1,]13[2,]24#生成單位陣>diag(3)

[,1][,2][,3][1,]100[2,]010[3,]001mat1<-matrix(1:12,3,4,byrow=T)mat2<-matrix(1:12,3,4,byrow=F)矩陣matrix概念:一個二維數(shù)組矩陣子集(元素)的提取>x<-matrix(1:6,2,3)[,1][,2][,3][1,]135[2,]246>x[2,2]#第二行、第2列的元素[1]4>x[2,]#第二行的所有元素[1]246>x[,2]#第2列的所有元素[1]34>x[2,c(2,3)]#第二行中第2、3列的元素[1]46矩陣子集(元素)的提取>x<-matrix(1:6,數(shù)據(jù)框dataframe使用函數(shù)data.frame()創(chuàng)建:mydata<-data.frame(col1,col2,col3,…)其中的列向量col1,col2,col3,…可以是任何數(shù)據(jù)類型。>patientID<-c(1,2,3,4)>age<-c(25,34,28,52)>diabetes<-c("Type1","Type2","Type1","Type1")>status<-c("Poor","Improved","Excellent","Poor")>patientdata<-data.frame(patientID,age,diabetes,status)>patientdata[1:2]#第1、2列的所有元素>patientdata$age#"$"符合用于選取一個指定的變量。數(shù)據(jù)框dataframe使用函數(shù)data.frame(列表list

R數(shù)據(jù)類型中最為復(fù)雜的一種數(shù)據(jù)結(jié)構(gòu)。列表就是包含任何類型的對象,可以是若干向量、矩陣、數(shù)據(jù)框,甚至其他列表的組合。通過函數(shù)list()來創(chuàng)建:mylist<-list(object1,object2,…)其中的對象object1,object2,…,可以是向量、矩陣、數(shù)據(jù)框或列表的任何一種結(jié)構(gòu)。#創(chuàng)建列表>g<-"MyFirstList">h<-c(25,26,18,39)>j<-matrix(1:10,nrow=5)>k<-c("one","two","three")>mylist<-list(title=g,ages=h,j,k)列表listR數(shù)據(jù)類型中最為復(fù)雜的一種數(shù)據(jù)結(jié)構(gòu)。因子factor概念:是一種向量對象,它給自己的組件指定了一個離散的分類(分組),它的組件由其他等長的向量組成。用函數(shù)factor()創(chuàng)建一個因子,levels按序(字母序或數(shù)值序)排列。#為province創(chuàng)建因子>province<-c("四川","湖南","江蘇","四川","四川","四川","湖南","江蘇","湖南","江蘇")>pf<-factor(province)#創(chuàng)建province的因子pf>pf[1]四川湖南江蘇四川四川四川湖南江蘇湖南江蘇Levels:湖南江蘇四川因子factor概念:是一種向量對象,它給自己的組件指定了一數(shù)據(jù)的輸入數(shù)據(jù)的輸入5導(dǎo)入Excel數(shù)據(jù)library(RODBC)channel<-odbcConnectExcel("d:/test.xls")mydata<-sqlFetch(channel,"Sheet1")channel2<-odbcConnectExcel2007("d:/test.xlsx")mydata2<-sqlFetch(channel,"Sheet1")6導(dǎo)入SAS數(shù)據(jù)library(foreign)mydata<-read.sas("d:/test.ssd")library(Hmisc)data<-sas.get("D:/test.ssd")7導(dǎo)入SPSS數(shù)據(jù)library(foreign)mydata<-read.spss("d:/test.sav")5導(dǎo)入Excel數(shù)據(jù)2.3數(shù)據(jù)的存儲>df<-data.frame(obs=c(1,2,3),treat=c("A","B","A"),weight=c(2.3,NA,9))(1)保存為txt文件>write.table(df,file="D:/Rdata/fg.txt",s=F,quote=F)#s=F:不寫入行名,quote=F:變量名不用雙引號。(2)保存為csv文件>write.csv(df,file="D:/Rdata/fg.csv")(3)保存為R格式文件>save(df,file="D:/Rdata/fg.Rdata")2.3數(shù)據(jù)的存儲>df<-data.frame(obsR數(shù)據(jù)操作變量創(chuàng)建與刪除變量重命名缺失值數(shù)據(jù)類型轉(zhuǎn)化數(shù)據(jù)排序數(shù)據(jù)合并數(shù)據(jù)子集提取數(shù)據(jù)重構(gòu)常用函數(shù)數(shù)據(jù)探索常見循環(huán)自編函數(shù)R數(shù)據(jù)操作變量創(chuàng)建與刪除數(shù)據(jù)子集提取變量創(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<-NULL變量創(chuàng)建與刪除mydata<-data.frame(變量的重命名df<-mydata第一種方法:調(diào)用編輯器重命名fix(df)第二種方法:使用函數(shù)names()重命名names(df)names(df)[1:3]<-c("A","B","C")變量的重命名df<-mydata缺失值的處理缺失值:NA(NotAvailable,不可用)不可能出現(xiàn)的值:NaN(NotaNumber,非數(shù)值)函數(shù)is.na()可檢測缺失值是否存在。例子x<-c(1:3,5,7,NA,9)sum(x)#結(jié)果為NAsum(x,na.rm=T)#結(jié)果為27缺失值的處理缺失值:NA(NotAvailable,不可數(shù)據(jù)類型的轉(zhuǎn)換數(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)#因子判斷:真數(shù)據(jù)轉(zhuǎn)換例子Rep<-c(1:6)數(shù)據(jù)的排序R自帶的order()函數(shù)plyr程序包的arrange()函數(shù)#按x1,x2先后依次排序#R自帶的order()排序df[order(-df$x1,df$x2),]#plyr程序包的arrange()函數(shù)排序library(plyr)arrange(df,-x1,x2)

數(shù)據(jù)的排序R自帶的order()函數(shù)排序例子#創(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),]df[order(df$size,df$weight),]df[order(df$size,-df$weight),]#plyr包的arrange()函數(shù)library(plyr)arrange(df,weight)arrange(df,size,weight)arrange(df,size,-weight)排序例子#創(chuàng)建數(shù)據(jù)框#R自帶的order()函數(shù)排序例子(非同一數(shù)據(jù)框)有兩列數(shù)據(jù)在一個數(shù)據(jù)框data

A

B

1

小明

2

小王

3

小李

4

小張

現(xiàn)輸入一列數(shù)gg

2

1

4

3

要求顯示出

A

B

2

小王

1

小明

4

小張

3

小李答案:data[order(gg),]排序例子(非同一數(shù)據(jù)框)有兩列數(shù)據(jù)在一個數(shù)據(jù)框data

A數(shù)據(jù)集的合并列合并#共有變量:IDtotal<-merge(dataA,dataB,by="ID")#解釋見代碼#共有變量:ID、Countrytotal<-merge(dataA,dataB,by=c("ID","Country")#含有一樣的行數(shù),而且以相同順序排序。total<-cbind(dataA,dataB)數(shù)據(jù)集的合并列合并列合并例子#創(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")列合并例子#創(chuàng)建數(shù)據(jù)框dataA#創(chuàng)建數(shù)據(jù)框da現(xiàn)在有某一地區(qū)的植物名錄表格gao.csv,表格內(nèi)只有兩列,分別為"中文名"和"name",

現(xiàn)在有中國IUCN植物紅色名錄數(shù)據(jù)庫表格chinaIUCN.csv(表格內(nèi)只有兩列,分別為瀕危等級"level"和"species"

)。我們需要通過匹配兩個表格獲得該地區(qū)植物的IUCN評估等級表。aa<-read.csv("chinaIUCN.csv")sp<-read.csv("gao.csv")bb<-merge(aa,sp,by.x="species",by.y="name",all.y=T)head(bb)write.csv(bb,"gaoIUCN.csv")列合并的案例分析現(xiàn)在有某一地區(qū)的植物名錄表格gao.csv,表格內(nèi)只有兩列行合并total<-rbind(dataA,dataB)注意:dataA與dataB需含有一樣的變量,但排列的順序可以不同。行合并total<-rbind(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)行合并例子dfA<-data.frame(Subjec數(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ù)框數(shù)據(jù)子集的提取3.7.1根據(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)]例子###創(chuàng)建數(shù)據(jù)框###以行取子集根據(jù)列名選取子集使用方法如下:df[,"name1"]表示返回列名為name1的數(shù)據(jù)df[,c("name1","name2",...,"namek")]表示返回由多個列組成的數(shù)據(jù)框df[,"size"]##返回向量df["size"]##返回數(shù)據(jù)框df[,c("size","sex")]根據(jù)列名選取子集使用方法如下:使用subset()函數(shù)subset(df,select=c(name1,name2,...,namek))表示返回由多個列組成的數(shù)據(jù)框subset(df,select=subject)subset(df,subject<3)subset(df,subject<3,select=-subject)subset(df,subject<3&sex=="M")使用subset()函數(shù)subset(df,select處理數(shù)據(jù)常用的函數(shù)處理數(shù)據(jù)常用的函數(shù)R語言基礎(chǔ)培訓(xùn)第一講R語言入門數(shù)據(jù)探索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行數(shù)據(jù)探索查看單個變量#查看數(shù)據(jù)集中所有變量的統(tǒng)計量summary(iris)

#單個變量的1%、25%、50%、75%、100%分位數(shù)quantile(iris$Sepal.Length)#返回均值、中位數(shù)和數(shù)據(jù)的范圍mean(iris$Sepal.Length);median(iris$Sepal.Length);range(iris$Sepal.Length)table(iris$Species)#統(tǒng)計每個類別的頻數(shù)pie(table(iris$Species))#畫出每個類別比例的餅圖查看單個變量#查看數(shù)據(jù)集中所有變量的統(tǒng)計量查看多個變量#查看變量之間的相關(guān)性cor(iris[,1:4])#針對每個Species水平繪制Sepal.Length的盒形圖boxplot(Sepal.Length~Species,data=iris)#繪制任意兩個矩陣之間的散點圖,及變量之間的相關(guān)性pairs(iris)查看多個變量#查看變量之間的相關(guān)性讀入stu.data.csv,數(shù)據(jù)集對象命名為stu.df;創(chuàng)建新變量armlegL,armlegL=arml+legl,并將其第2、5、7、10個值刪除;然后再刪除變量armlegL;判斷Grade的數(shù)據(jù)類型,將其轉(zhuǎn)換為因子;對數(shù)據(jù)集按age(升序)、weight(降序)排序。構(gòu)建df1A,使其含有stu.df的前20行組成的數(shù)據(jù)框;stu.df從20行后的數(shù)據(jù)賦給df1B;合并df1A、df1B為df1;構(gòu)建df2A,使其含有stu.df的前6個變量組成的數(shù)據(jù)框;將stu.df的第1個變量和從第6個變量以后的數(shù)據(jù)組成df2B;合并df2A、df2B為df2;從stu.df中提取出age>20、Grade<3的所有數(shù)據(jù);計算weight的平均值,找出height最大值。練習(xí)二讀入stu.data.csv,數(shù)據(jù)集對象命名為stu.df;練習(xí)二答案stu.df<-read.csv(file="stu.data.csv",header=T)stu.df$armlegL<-stu.df$arml+stu.df$leglstu.df$armlegL[c(2,5,7,10)]<-NAstu.df$armlegL<-NULLis.numeric(stu.df$Grade);summary(stu.df$Grade)stu.df$Grade<-as.factor(stu.df$Grade);summary(stu.df$Grade)library(plyr)arrange(stu.df,age,-weight)df1A<-stu.df[1:20,];df1B<-stu.df[-1:-20,]df1<-rbind(df1A,df1B)df2A<-stu.df[,1:6];df2B<-stu.df[,-2:-6]df2<-merge(df2A,df2B,by="ID")df3<-subset(stu.df,age>20&Grade<3)mean(stu.df$weight);max(stu.df$height)練習(xí)二答案stu.df<-read.csv(file="s演講完畢,謝謝觀看!演講完畢,謝謝觀看!R語言入門R語言入門68什么是R?R是一種統(tǒng)計繪圖語言,也指實現(xiàn)該語言的軟件。TheRProjectforStatisticalComputing

2什么是R?R是一種統(tǒng)計繪圖語言,也指實現(xiàn)該語言的軟件。Th69為什么要學(xué)會R?3為什么要學(xué)會R?SPSS(StatisticalPackagefortheSocialSciences)的發(fā)明者諾曼·奈伊(NormanNie)說:“沒有什么統(tǒng)計概念是R不能表現(xiàn)的。SPSS(StatisticalPackagefort71R簡史R語言是從S統(tǒng)計繪圖語言演變而來,可看作S的"方言"。

S語言上世紀(jì)70年代誕生于貝爾實驗室,由約翰·錢伯斯(JohnChambers)開發(fā)?;赟語言開發(fā)的商業(yè)軟件Splus,可以方便的編寫函數(shù)、建立模型,具有良好的擴展性,在國外學(xué)術(shù)界應(yīng)用很廣,對SPSS

和SAS

有力沖擊。

1995年由新西蘭Auckland大學(xué)統(tǒng)計系的羅斯·艾卡(RossIhaka)和羅伯特·簡特曼(RobertGentleman),基于S語言的源代碼,編寫了一能執(zhí)行S語言的軟件,并將該軟件的源代碼全部公開,這就是R軟件,其命令統(tǒng)稱為R語言。5R簡史R語言是從S統(tǒng)計繪圖語言演變R的起源RobertGentlemanRossIhaka自1997年以后,有一個核心團隊,這一團隊能對R的源代碼進行修改。R的起源RobertGentlemanRossIhak73R的優(yōu)點多領(lǐng)域的統(tǒng)計資源目前在R網(wǎng)站上約有8230個程序包,涵蓋了基礎(chǔ)統(tǒng)計學(xué)、社會學(xué)、經(jīng)濟學(xué)、生態(tài)學(xué)、空間分析、系統(tǒng)發(fā)育分析、生物信息學(xué)等諸多方面。免費開源統(tǒng)計分析能力突出作圖功能強大拓展與開發(fā)能力強7R的優(yōu)點多領(lǐng)域的統(tǒng)計資源74R的缺點用戶需要對命令熟悉與代碼打交道,需要記住常用命令。幫助系統(tǒng)均為英文占用內(nèi)存所有的數(shù)據(jù)處理在內(nèi)存中進行,不適于處理超大規(guī)模的數(shù)據(jù)。運行速度稍慢即時編譯,約相當(dāng)于C語言的1/20。8R的缺點用戶需要對命令熟悉如何學(xué)習(xí)R?熟悉語法訓(xùn)練思維善于求助熟能生巧保持興趣…NevertoolateandtoooldtolearnR…如何學(xué)習(xí)R?熟悉語法Nevertoolateandt761077Windows下載和安裝R下載完成后,雙擊R-3.2.4-win.exe

開始安裝。一直點擊下一步,各選項默認,語言建議選英文。11Windows下載和安裝R78圖4R登陸界面(Windows版)路徑:開始>所有程序>R3.2.4菜單欄快捷按鈕控制臺光標(biāo):等待輸入12圖4R登陸界面(Windows版)菜單欄快捷按鈕控制79R圖形界面:Rstudio13R圖形界面:RstudioRStudio有以下幾大優(yōu)點:代碼字體高亮,代碼完整性智能識別、自動縮進;可直接執(zhí)行R程序代碼;可運行多個R程序;可直接瀏覽工作表和數(shù)據(jù);可隨意縮放繪制的圖形,并且有多種輸出格式;整合R幫助和R使用文檔;可查看R命令的運行記錄。RStudio有以下幾大優(yōu)點:代碼字體高亮,代碼完整性智能8115R語言基礎(chǔ)培訓(xùn)第一講R語言入門83R程序包(RPackages)程序包是什么?

R程序包是多個函數(shù)的集合,具有詳細的說明和示例。

Window下的R程序包是經(jīng)過編譯的zip包。每個程序包包含R函數(shù)、數(shù)據(jù)、幫助文件、描述文件等。為什么要安裝程序包?

R程序包是R功能擴展,特定的分析功能,需要用相應(yīng)的程序包實現(xiàn)。例如:系統(tǒng)發(fā)育分析,常用到ape程序包,群落生態(tài)學(xué)vegan包等。17R程序包(RPackages)程序包是什么?84install.views("Environmetrics")?18install.views("Environmetric85三種平臺上的程序包19三種平臺上的程序包86R程序包在CRAN提供了每個包的源代碼和編譯好的程序包以vegan包為例,CRAN提供了:Packagesource:vegan_1.17-2.tar.gzMacOSXbinary:vegan_1.17-2.tgzWindowsbinary:vegan_1.17-2.zipReferencemanual:vegan.pdfWindow下程序包為zip文件,安裝時不要解壓縮。20R程序包在CRAN提供了每個包的源代碼和編譯好的程序包87安裝程序包的方法1菜單安裝在聯(lián)網(wǎng)的條件下,按菜單欄【程序包】下拉選擇【安裝程序包】,選擇所需的程序包進行實時安裝;2聯(lián)網(wǎng)命令安裝例如:要安裝vegan包,在控制臺中輸入

install.packages("vegan")3本地安裝路徑:Packages>installpackagesfromlocalfiles選擇本地磁盤上存儲zip包的文件夾。4腳本安裝在聯(lián)網(wǎng)的條件下,請運行Rpackages.install.R程序,即可完成本培訓(xùn)所需的程序包安裝。21安裝程序包的方法1菜單安裝88程序包使用與更新程序包的中函數(shù),都要先導(dǎo)入,再使用,因此導(dǎo)入程序包是第一步。在控制臺中輸入如下命令:library(lattice)library(ggplot2)所有程序包的更新update.packages()注意:R命令對大小寫敏感,因此使用命令方式安裝和載入程序包時應(yīng)特別注意。22程序包使用與更新程序包的中函數(shù),都要先導(dǎo)入,再使用,因此89查看程序包幫助文件vegan程序包內(nèi)部都有哪些函數(shù)?分別有什么功能?查詢程序包內(nèi)容最常用的方法:1菜單幫助>Html幫助2查看pdf幫助文檔23查看程序包幫助文件vegan程序包內(nèi)部都有哪些函數(shù)?分90查看函數(shù)的幫助文件函數(shù)的默認值是什么?怎么使用?使用時需要注意什么問題?需要查詢函數(shù)的幫助。1?t.test2RGui>Help>Htmlhelp3apropos("t.test")4help("t.test")5help.search("t.test")6查看R包pdf手冊24查看函數(shù)的幫助文件函數(shù)的默認值是什么?怎么使用?使用912592幫助文件的內(nèi)容t.test{stats}#函數(shù)名及所在包

FittingLinearModels#標(biāo)題Description#函數(shù)描述Usage#默認選項Arguments#參數(shù)Details#詳情Author(s)#作者References#參考文獻Examples#舉例26幫助文件的內(nèi)容t.test{stats}93練習(xí)一安裝R并導(dǎo)入程序包1.安裝R和Rstudio軟件、熟悉菜單2.本地安裝程序包:vegan3.調(diào)用程序包,查看程序包的幫助library(vegan)查找vegan包中cca函數(shù)的幫助輸入?cca(試試"??cca")將其中的Example粘貼到控制臺中,查看運行的結(jié)果。27練習(xí)一安裝R并導(dǎo)入程序包1.安裝R和RstudioR數(shù)據(jù)集創(chuàng)建數(shù)據(jù)創(chuàng)建

向量,數(shù)組,矩陣,數(shù)據(jù)框,列表,因子數(shù)據(jù)輸入

scan(),csv文件,excel文件,sas數(shù)據(jù)…數(shù)據(jù)存儲

write.table(),write.csv(),save()R數(shù)據(jù)集創(chuàng)建數(shù)據(jù)創(chuàng)建向量vector概念:用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一維數(shù)組。

例子:

a<-c(1,2,5,3,6,-2,4)#數(shù)值型向量b<-c("one","two","three")#字符型向量c<-c(TRUE,TRUE,TRUE)#邏輯型向量

注意:單個向量中的數(shù)據(jù)必須是相同的類型(數(shù)值型、字符型或邏輯型)。向量vector概念:用于存儲數(shù)值型、字符型或邏輯型數(shù)據(jù)的一R語言基礎(chǔ)培訓(xùn)第一講R語言入門創(chuàng)建重復(fù)的向量>rep(2:5,2)#等價于rep(2:5,times=2)[1]23452345

>rep(2:5,rep(2,4))[1]22334455

>rep(1:3,times=4,each=2)[1]112233112233112233112233>paste(c("X","Y"),1:10,sep="-")#不規(guī)則[1]"X-1""Y-2""X-3""Y-4""X-5""Y-6""X-7""Y-8""X-9""Y-10">rep(factor(LETTERS[1:3]),5)[1]ABCABCABCABCABCLevels:ABC創(chuàng)建重復(fù)的向量>rep(2:5,2)向量中元素的訪問>a<-c(1,2,5,3,6,-2,4)#向量a中第三個數(shù)據(jù)>a[3][1]5

#向量a中第一、三、五個數(shù)據(jù)>a[c(1,3,5)][1]156#向量a中第二到第六個數(shù)據(jù)>a[2:6][1]2536-2#向量a中數(shù)值大于3的所有數(shù)據(jù)>a[a>3][1]564

#去掉第一個值>a[-1][1]2536-24#去掉前三個值>a[-1:-3][1]36-24向量中元素的訪問>a<-c(1,2,5,3,6,矩陣matrix概念:一個二維數(shù)組#創(chuàng)建一個2×2的矩陣>matrix(1:4,nrow=2,ncol=2)

[,1][,2][1,]13[2,]24#生成單位陣>diag(3)

[,1][,2][,3][1,]100[2,]010[3,]001mat1<-matrix(1:12,3,4,byrow=T)mat2<-matrix(1:12,3,4,byrow=F)矩陣matrix概念:一個二維數(shù)組矩陣子集(元素)的提取>x<-matrix(1:6,2,3)[,1][,2][,3][1,]135[2,]246>x[2,2]#第二行、第2列的元素[1]4>x[2,]#第二行的所有元素[1]246>x[,2]#第2列的所有元素[1]34>x[2,c(2,3)]#第二行中第2、3列的元素[1]46矩陣子集(元素)的提取>x<-matrix(1:6,數(shù)據(jù)框dataframe使用函數(shù)data.frame()創(chuàng)建:mydata<-data.frame(col1,col2,col3,…)其中的列向量col1,col2,col3,…可以是任何數(shù)據(jù)類型。>patientID<-c(1,2,3,4)>age<-c(25,34,28,52)>diabetes<-c("Type1","Type2","Type1","Type1")>status<-c("Poor","Improved","Excellent","Poor")>patientdata<-data.frame(patientID,age,diabetes,status)>patientdata[1:2]#第1、2列的所有元素>patientdata$age#"$"符合用于選取一個指定的變量。數(shù)據(jù)框dataframe使用函數(shù)data.frame(列表list

R數(shù)據(jù)類型中最為復(fù)雜的一種數(shù)據(jù)結(jié)構(gòu)。列表就是包含任何類型的對象,可以是若干向量、矩陣、數(shù)據(jù)框,甚至其他列表的組合。通過函數(shù)list()來創(chuàng)建:mylist<-list(object1,object2,…)其中的對象object1,object2,…,可以是向量、矩陣、數(shù)據(jù)框或列表的任何一種結(jié)構(gòu)。#創(chuàng)建列表>g<-"MyFirstList">h<-c(25,26,18,39)>j<-matrix(1:10,nrow=5)>k<-c("one","two","three")>mylist<-list(title=g,ages=h,j,k)列表listR數(shù)據(jù)類型中最為復(fù)雜的一種數(shù)據(jù)結(jié)構(gòu)。因子factor概念:是一種向量對象,它給自己的組件指定了一個離散的分類(分組),它的組件由其他等長的向量組成。用函數(shù)factor()創(chuàng)建一個因子,levels按序(字母序或數(shù)值序)排列。#為province創(chuàng)建因子>province<-c("四川","湖南","江蘇","四川","四川","四川","湖南","江蘇","湖南","江蘇")>pf<-factor(province)#創(chuàng)建province的因子pf>pf[1]四川湖南江蘇四川四川四川湖南江蘇湖南江蘇Levels:湖南江蘇四川因子factor概念:是一種向量對象,它給自己的組件指定了一數(shù)據(jù)的輸入數(shù)據(jù)的輸入5導(dǎo)入Excel數(shù)據(jù)library(RODBC)channel<-odbcConnectExcel("d:/test.xls")mydata<-sqlFetch(channel,"Sheet1")channel2<-odbcConnectExcel2007("d:/test.xlsx")mydata2<-sqlFetch(channel,"Sheet1")6導(dǎo)入SAS數(shù)據(jù)library(foreign)mydata<-read.sas("d:/test.ssd")library(Hmisc)data<-sas.get("D:/test.ssd")7導(dǎo)入SPSS數(shù)據(jù)library(foreign)mydata<-read.spss("d:/test.sav")5導(dǎo)入Excel數(shù)據(jù)2.3數(shù)據(jù)的存儲>df<-data.frame(obs=c(1,2,3),treat=c("A","B","A"),weight=c(2.3,NA,9))(1)保存為txt文件>write.table(df,file="D:/Rdata/fg.txt",s=F,quote=F)#s=F:不寫入行名,quote=F:變量名不用雙引號。(2)保存為csv文件>write.csv(df,file="D:/Rdata/fg.csv")(3)保存為R格式文件>save(df,file="D:/Rdata/fg.Rdata")2.3數(shù)據(jù)的存儲>df<-data.frame(obsR數(shù)據(jù)操作變量創(chuàng)建與刪除變量重命名缺失值數(shù)據(jù)類型轉(zhuǎn)化數(shù)據(jù)排序數(shù)據(jù)合并數(shù)據(jù)子集提取數(shù)據(jù)重構(gòu)常用函數(shù)數(shù)據(jù)探索常見循環(huán)自編函數(shù)R數(shù)據(jù)操作變量創(chuàng)建與刪除數(shù)據(jù)子集提取變量創(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<-NULL變量創(chuàng)建與刪除mydata<-data.frame(變量的重命名df<-mydata第一種方法:調(diào)用編輯器重命名fix(df)第二種方法:使用函數(shù)names()重命名names(df)names(df)[1:3]<-c("A","B","C")變量的重命名df<-mydata缺失值的處理缺失值:NA(NotAvailable,不可用)不可能出現(xiàn)的值:NaN(NotaNumber,非數(shù)值)函數(shù)is.na()可檢測缺失值是否存在。例子x<-c(1:3,5,7,NA,9)sum(x)#結(jié)果為NAsum(x,na.rm=T)#結(jié)果為27缺失值的處理缺失值:NA(NotAvailable,不可數(shù)據(jù)類型的轉(zhuǎn)換數(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)#因子判斷:真數(shù)據(jù)轉(zhuǎn)換例子Rep<-c(1:6)數(shù)據(jù)的排序R自帶的order()函數(shù)plyr程序包的arrange()函數(shù)#按x1,x2先后依次排序#R自帶的order()排序df[order(-df$x1,df$x2),]#plyr程序包的arrange()函數(shù)排序library(plyr)arrange(df,-x1,x2)

數(shù)據(jù)的排序R自帶的order()函數(shù)排序例子#創(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),]df[order(df$size,df$weight),]df[order(df$size,-df$weight),]#plyr包的arrange()函數(shù)library(plyr)arrange(df,weight)arrange(df,size,weight)arrange(df,size,-weight)排序例子#創(chuàng)建數(shù)據(jù)框#R自帶的order()函數(shù)排序例子(非同一數(shù)據(jù)框)有兩列數(shù)據(jù)在一個數(shù)據(jù)框data

A

B

1

小明

2

小王

3

小李

4

小張

現(xiàn)輸入一列數(shù)gg

2

1

4

3

要求顯示出

A

B

2

小王

1

小明

4

小張

3

小李答案:data[order(gg),]排序例子(非同一數(shù)據(jù)框)有兩列數(shù)據(jù)在一個數(shù)據(jù)框data

A數(shù)據(jù)集的合并列合并#共有變量:IDtotal<-merge(dataA,dataB,by="ID")#解釋見代碼#共有變量:ID、Countrytotal<-merge(dataA,dataB,by=c("ID","Country")#含有一樣的行數(shù),而且以相同順序排序。total<-cbind(dataA,dataB)數(shù)據(jù)集的合并列合并列合并例子#創(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")列合并例子#創(chuàng)建數(shù)據(jù)框dataA#創(chuàng)建數(shù)據(jù)框da現(xiàn)在有某一地區(qū)的植物名錄表格gao.csv,表格內(nèi)只有兩列,分別為"中文名"和"name",

現(xiàn)在有中國IUCN植物紅色名錄數(shù)據(jù)庫表格chinaIUCN.csv(表格內(nèi)只有兩列,分別為瀕危等級"level"和"species"

)。我們需要通過匹配兩個表格獲得該地區(qū)植物的IUCN評估等級表。aa<-read.csv("chinaIUCN.csv")sp<-read.csv("gao.csv")bb<-merge(aa,sp,by.x="species",by.y="name",all.y=T)head(bb)write.csv(bb,"gaoIUCN.csv")列合并的案例分析現(xiàn)在有某一地區(qū)的植物名錄表格gao.csv,表格內(nèi)只有兩列行合并total<-rbind(dataA,dataB)注意:dataA與dataB需含有一樣的變量,但排列的順序可以不同。行合并total<-rbind(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)行合并例子dfA<

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論