版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
R语言入门R语言入门2什么是R?R是一种统计绘图语言,也指实现该语言的软件。TheRProjectforStatisticalComputing
2什么是R?R是一种统计绘图语言,也指实现该语言的软件。Th3为什么要学会R?3为什么要学会R?SPSS(StatisticalPackagefortheSocialSciences)的发明者诺曼·奈伊(NormanNie)说:“没有什么统计概念是R不能表现的。SPSS(StatisticalPackagefort5R简史R语言是从S统计绘图语言演变而来,可看作S的"方言"。
S语言上世纪70年代诞生于贝尔实验室,由约翰·钱伯斯(JohnChambers)开发。基于S语言开发的商业软件Splus,可以方便的编写函数、建立模型,具有良好的扩展性,在国外学术界应用很广,对SPSS
和SAS
有力冲击。
1995年由新西兰Auckland大学统计系的罗斯·艾卡(RossIhaka)和罗伯特·简特曼(RobertGentleman),基于S语言的源代码,编写了一能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言。5R简史R语言是从S统计绘图语言演变R的起源RobertGentlemanRossIhaka自1997年以后,有一个核心团队,这一团队能对R的源代码进行修改。R的起源RobertGentlemanRossIhak7R的优点多领域的统计资源目前在R网站上约有8230个程序包,涵盖了基础统计学、社会学、经济学、生态学、空间分析、系统发育分析、生物信息学等诸多方面。免费开源统计分析能力突出作图功能强大拓展与开发能力强7R的优点多领域的统计资源8R的缺点用户需要对命令熟悉与代码打交道,需要记住常用命令。帮助系统均为英文占用内存所有的数据处理在内存中进行,不适于处理超大规模的数据。运行速度稍慢即时编译,约相当于C语言的1/20。8R的缺点用户需要对命令熟悉如何学习R?熟悉语法训练思维善于求助熟能生巧保持兴趣…NevertoolateandtoooldtolearnR…如何学习R?熟悉语法Nevertoolateandt101011Windows下载和安装R下载完成后,双击R-3.2.4-win.exe
开始安装。一直点击下一步,各选项默认,语言建议选英文。11Windows下载和安装R12图4R登陆界面(Windows版)路径:开始>所有程序>R3.2.4菜单栏快捷按钮控制台光标:等待输入12图4R登陆界面(Windows版)菜单栏快捷按钮控制13R图形界面:Rstudio13R图形界面:RstudioRStudio有以下几大优点:代码字体高亮,代码完整性智能识别、自动缩进;可直接执行R程序代码;可运行多个R程序;可直接浏览工作表和数据;可随意缩放绘制的图形,并且有多种输出格式;整合R帮助和R使用文档;可查看R命令的运行记录。RStudio有以下几大优点:代码字体高亮,代码完整性智能1515R语言基础培训第一讲R语言入门17R程序包(RPackages)程序包是什么?
R程序包是多个函数的集合,具有详细的说明和示例。
Window下的R程序包是经过编译的zip包。每个程序包包含R函数、数据、帮助文件、描述文件等。为什么要安装程序包?
R程序包是R功能扩展,特定的分析功能,需要用相应的程序包实现。例如:系统发育分析,常用到ape程序包,群落生态学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菜单安装在联网的条件下,按菜单栏【程序包】下拉选择【安装程序包】,选择所需的程序包进行实时安装;2联网命令安装例如:要安装vegan包,在控制台中输入
install.packages("vegan")3本地安装路径:Packages>installpackagesfromlocalfiles选择本地磁盘上存储zip包的文件夹。4脚本安装在联网的条件下,请运行Rpackages.install.R程序,即可完成本培训所需的程序包安装。21安装程序包的方法1菜单安装22程序包使用与更新程序包的中函数,都要先导入,再使用,因此导入程序包是第一步。在控制台中输入如下命令:library(lattice)library(ggplot2)所有程序包的更新update.packages()注意:R命令对大小写敏感,因此使用命令方式安装和载入程序包时应特别注意。22程序包使用与更新程序包的中函数,都要先导入,再使用,因此23查看程序包帮助文件vegan程序包内部都有哪些函数?分别有什么功能?查询程序包内容最常用的方法:1菜单帮助>Html帮助2查看pdf帮助文档23查看程序包帮助文件vegan程序包内部都有哪些函数?分24查看函数的帮助文件函数的默认值是什么?怎么使用?使用时需要注意什么问题?需要查询函数的帮助。1?t.test2RGui>Help>Htmlhelp3apropos("t.test")4help("t.test")5help.search("t.test")6查看R包pdf手册24查看函数的帮助文件函数的默认值是什么?怎么使用?使用252526帮助文件的内容t.test{stats}#函数名及所在包
FittingLinearModels#标题Description#函数描述Usage#默认选项Arguments#参数Details#详情Author(s)#作者References#参考文献Examples#举例26帮助文件的内容t.test{stats}27练习一安装R并导入程序包1.安装R和Rstudio软件、熟悉菜单2.本地安装程序包:vegan3.调用程序包,查看程序包的帮助library(vegan)查找vegan包中cca函数的帮助输入?cca(试试"??cca")将其中的Example粘贴到控制台中,查看运行的结果。27练习一安装R并导入程序包1.安装R和RstudioR数据集创建数据创建
向量,数组,矩阵,数据框,列表,因子数据输入
scan(),csv文件,excel文件,sas数据…数据存储
write.table(),write.csv(),save()R数据集创建数据创建向量vector概念:用于存储数值型、字符型或逻辑型数据的一维数组。
例子:
a<-c(1,2,5,3,6,-2,4)#数值型向量b<-c("one","two","three")#字符型向量c<-c(TRUE,TRUE,TRUE)#逻辑型向量
注意:单个向量中的数据必须是相同的类型(数值型、字符型或逻辑型)。向量vector概念:用于存储数值型、字符型或逻辑型数据的一R语言基础培训第一讲R语言入门创建重复的向量>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="-")#不规则[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创建重复的向量>rep(2:5,2)向量中元素的访问>a<-c(1,2,5,3,6,-2,4)#向量a中第三个数据>a[3][1]5
#向量a中第一、三、五个数据>a[c(1,3,5)][1]156#向量a中第二到第六个数据>a[2:6][1]2536-2#向量a中数值大于3的所有数据>a[a>3][1]564
#去掉第一个值>a[-1][1]2536-24#去掉前三个值>a[-1:-3][1]36-24向量中元素的访问>a<-c(1,2,5,3,6,矩阵matrix概念:一个二维数组#创建一个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概念:一个二维数组矩阵子集(元素)的提取>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,数据框dataframe使用函数data.frame()创建:mydata<-data.frame(col1,col2,col3,…)其中的列向量col1,col2,col3,…可以是任何数据类型。>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#"$"符合用于选取一个指定的变量。数据框dataframe使用函数data.frame(列表list
R数据类型中最为复杂的一种数据结构。列表就是包含任何类型的对象,可以是若干向量、矩阵、数据框,甚至其他列表的组合。通过函数list()来创建:mylist<-list(object1,object2,…)其中的对象object1,object2,…,可以是向量、矩阵、数据框或列表的任何一种结构。#创建列表>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数据类型中最为复杂的一种数据结构。因子factor概念:是一种向量对象,它给自己的组件指定了一个离散的分类(分组),它的组件由其他等长的向量组成。用函数factor()创建一个因子,levels按序(字母序或数值序)排列。#为province创建因子>province<-c("四川","湖南","江苏","四川","四川","四川","湖南","江苏","湖南","江苏")>pf<-factor(province)#创建province的因子pf>pf[1]四川湖南江苏四川四川四川湖南江苏湖南江苏Levels:湖南江苏四川因子factor概念:是一种向量对象,它给自己的组件指定了一数据的输入数据的输入5导入Excel数据library(RODBC)channel<-odbcConnectExcel("d:/test.xls")mydata<-sqlFetch(channel,"Sheet1")channel2<-odbcConnectExcel2007("d:/test.xlsx")mydata2<-sqlFetch(channel,"Sheet1")6导入SAS数据library(foreign)mydata<-read.sas("d:/test.ssd")library(Hmisc)data<-sas.get("D:/test.ssd")7导入SPSS数据library(foreign)mydata<-read.spss("d:/test.sav")5导入Excel数据2.3数据的存储>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数据的存储>df<-data.frame(obsR数据操作变量创建与删除变量重命名缺失值数据类型转化数据排序数据合并数据子集提取数据重构常用函数数据探索常见循环自编函数R数据操作变量创建与删除数据子集提取变量创建与删除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变量创建与删除mydata<-data.frame(变量的重命名df<-mydata第一种方法:调用编辑器重命名fix(df)第二种方法:使用函数names()重命名names(df)names(df)[1:3]<-c("A","B","C")变量的重命名df<-mydata缺失值的处理缺失值:NA(NotAvailable,不可用)不可能出现的值:NaN(NotaNumber,非数值)函数is.na()可检测缺失值是否存在。例子x<-c(1:3,5,7,NA,9)sum(x)#结果为NAsum(x,na.rm=T)#结果为27缺失值的处理缺失值:NA(NotAvailable,不可数据类型的转换数据类型的转换数据转换例子Rep<-c(1:6)#Rep赋值is.numeric(Rep)#数值型判断:真is.factor(Rep)#因子判断:假Rep<-as.factor(Rep)#转换为因子is.factor(Rep)#因子判断:真数据转换例子Rep<-c(1:6)数据的排序R自带的order()函数plyr程序包的arrange()函数#按x1,x2先后依次排序#R自带的order()排序df[order(-df$x1,df$x2),]#plyr程序包的arrange()函数排序library(plyr)arrange(df,-x1,x2)
数据的排序R自带的order()函数排序例子#创建数据框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()函数df[order(df$weight),]df[order(df$size,df$weight),]df[order(df$size,-df$weight),]#plyr包的arrange()函数library(plyr)arrange(df,weight)arrange(df,size,weight)arrange(df,size,-weight)排序例子#创建数据框#R自带的order()函数排序例子(非同一数据框)有两列数据在一个数据框data
A
B
1
小明
2
小王
3
小李
4
小张
现输入一列数gg
2
1
4
3
要求显示出
A
B
2
小王
1
小明
4
小张
3
小李答案:data[order(gg),]排序例子(非同一数据框)有两列数据在一个数据框data
A数据集的合并列合并#共有变量:IDtotal<-merge(dataA,dataB,by="ID")#解释见代码#共有变量:ID、Countrytotal<-merge(dataA,dataB,by=c("ID","Country")#含有一样的行数,而且以相同顺序排序。total<-cbind(dataA,dataB)数据集的合并列合并列合并例子#创建数据框dataAdataA<-read.table(header=T,text='storyidtitle1lions2tigers3bears')#创建数据框dataBdataB<-read.table(header=T,text='subjectstoryidrating116.7124.5223.3215.2')#合并数据框dataA,dataBmerge(dataA,dataB,"storyid")#将dataA的stroyid重命名为idcolnames(dataA)[1]<-c("Id")merge(x=dataA,y=dataB,by.x="id",by.y="storyid")列合并例子#创建数据框dataA#创建数据框da现在有某一地区的植物名录表格gao.csv,表格内只有两列,分别为"中文名"和"name",
现在有中国IUCN植物红色名录数据库表格chinaIUCN.csv(表格内只有两列,分别为濒危等级"level"和"species"
)。我们需要通过匹配两个表格获得该地区植物的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")列合并的案例分析现在有某一地区的植物名录表格gao.csv,表格内只有两列行合并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数据子集的提取3.7.1根据位置选取子集使用方法如下:df[m1,] 表示返回第m1行的数据df[c(m1,m2,...,mj),] 表示返回由第m1,m2,..mj行组成的数据框df[,n1] 表示返回第n1列的数据df[,c(n1,n2,...,nk)] 表示返回由第n1,n2,..nk列组成的数据框数据子集的提取3.7.1根据位置选取子集例子###创建数据框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)]例子###创建数据框###以行取子集根据列名选取子集使用方法如下:df[,"name1"]表示返回列名为name1的数据df[,c("name1","name2",...,"namek")]表示返回由多个列组成的数据框df[,"size"]##返回向量df["size"]##返回数据框df[,c("size","sex")]根据列名选取子集使用方法如下:使用subset()函数subset(df,select=c(name1,name2,...,namek))表示返回由多个列组成的数据框subset(df,select=subject)subset(df,subject<3)subset(df,subject<3,select=-subject)subset(df,subject<3&sex=="M")使用subset()函数subset(df,select处理数据常用的函数处理数据常用的函数R语言基础培训第一讲R语言入门数据探索dim(iris) #数据集的维度,有多少行多少列?names(iris)#数据有哪些列?str(iris) #数据的结构如何?iris[1:5,] #查看数据的前5行head(iris)#查看数据的前6行tail(iris) #查看数据的最后6行数据探索查看单个变量#查看数据集中所有变量的统计量summary(iris)
#单个变量的1%、25%、50%、75%、100%分位数quantile(iris$Sepal.Length)#返回均值、中位数和数据的范围mean(iris$Sepal.Length);median(iris$Sepal.Length);range(iris$Sepal.Length)table(iris$Species)#统计每个类别的频数pie(table(iris$Species))#画出每个类别比例的饼图查看单个变量#查看数据集中所有变量的统计量查看多个变量#查看变量之间的相关性cor(iris[,1:4])#针对每个Species水平绘制Sepal.Length的盒形图boxplot(Sepal.Length~Species,data=iris)#绘制任意两个矩阵之间的散点图,及变量之间的相关性pairs(iris)查看多个变量#查看变量之间的相关性读入stu.data.csv,数据集对象命名为stu.df;创建新变量armlegL,armlegL=arml+legl,并将其第2、5、7、10个值删除;然后再删除变量armlegL;判断Grade的数据类型,将其转换为因子;对数据集按age(升序)、weight(降序)排序。构建df1A,使其含有stu.df的前20行组成的数据框;stu.df从20行后的数据赋给df1B;合并df1A、df1B为df1;构建df2A,使其含有stu.df的前6个变量组成的数据框;将stu.df的第1个变量和从第6个变量以后的数据组成df2B;合并df2A、df2B为df2;从stu.df中提取出age>20、Grade<3的所有数据;计算weight的平均值,找出height最大值。练习二读入stu.data.csv,数据集对象命名为stu.df;练习二答案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)练习二答案stu.df<-read.csv(file="s演讲完毕,谢谢观看!演讲完毕,谢谢观看!R语言入门R语言入门68什么是R?R是一种统计绘图语言,也指实现该语言的软件。TheRProjectforStatisticalComputing
2什么是R?R是一种统计绘图语言,也指实现该语言的软件。Th69为什么要学会R?3为什么要学会R?SPSS(StatisticalPackagefortheSocialSciences)的发明者诺曼·奈伊(NormanNie)说:“没有什么统计概念是R不能表现的。SPSS(StatisticalPackagefort71R简史R语言是从S统计绘图语言演变而来,可看作S的"方言"。
S语言上世纪70年代诞生于贝尔实验室,由约翰·钱伯斯(JohnChambers)开发。基于S语言开发的商业软件Splus,可以方便的编写函数、建立模型,具有良好的扩展性,在国外学术界应用很广,对SPSS
和SAS
有力冲击。
1995年由新西兰Auckland大学统计系的罗斯·艾卡(RossIhaka)和罗伯特·简特曼(RobertGentleman),基于S语言的源代码,编写了一能执行S语言的软件,并将该软件的源代码全部公开,这就是R软件,其命令统称为R语言。5R简史R语言是从S统计绘图语言演变R的起源RobertGentlemanRossIhaka自1997年以后,有一个核心团队,这一团队能对R的源代码进行修改。R的起源RobertGentlemanRossIhak73R的优点多领域的统计资源目前在R网站上约有8230个程序包,涵盖了基础统计学、社会学、经济学、生态学、空间分析、系统发育分析、生物信息学等诸多方面。免费开源统计分析能力突出作图功能强大拓展与开发能力强7R的优点多领域的统计资源74R的缺点用户需要对命令熟悉与代码打交道,需要记住常用命令。帮助系统均为英文占用内存所有的数据处理在内存中进行,不适于处理超大规模的数据。运行速度稍慢即时编译,约相当于C语言的1/20。8R的缺点用户需要对命令熟悉如何学习R?熟悉语法训练思维善于求助熟能生巧保持兴趣…NevertoolateandtoooldtolearnR…如何学习R?熟悉语法Nevertoolateandt761077Windows下载和安装R下载完成后,双击R-3.2.4-win.exe
开始安装。一直点击下一步,各选项默认,语言建议选英文。11Windows下载和安装R78图4R登陆界面(Windows版)路径:开始>所有程序>R3.2.4菜单栏快捷按钮控制台光标:等待输入12图4R登陆界面(Windows版)菜单栏快捷按钮控制79R图形界面:Rstudio13R图形界面:RstudioRStudio有以下几大优点:代码字体高亮,代码完整性智能识别、自动缩进;可直接执行R程序代码;可运行多个R程序;可直接浏览工作表和数据;可随意缩放绘制的图形,并且有多种输出格式;整合R帮助和R使用文档;可查看R命令的运行记录。RStudio有以下几大优点:代码字体高亮,代码完整性智能8115R语言基础培训第一讲R语言入门83R程序包(RPackages)程序包是什么?
R程序包是多个函数的集合,具有详细的说明和示例。
Window下的R程序包是经过编译的zip包。每个程序包包含R函数、数据、帮助文件、描述文件等。为什么要安装程序包?
R程序包是R功能扩展,特定的分析功能,需要用相应的程序包实现。例如:系统发育分析,常用到ape程序包,群落生态学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菜单安装在联网的条件下,按菜单栏【程序包】下拉选择【安装程序包】,选择所需的程序包进行实时安装;2联网命令安装例如:要安装vegan包,在控制台中输入
install.packages("vegan")3本地安装路径:Packages>installpackagesfromlocalfiles选择本地磁盘上存储zip包的文件夹。4脚本安装在联网的条件下,请运行Rpackages.install.R程序,即可完成本培训所需的程序包安装。21安装程序包的方法1菜单安装88程序包使用与更新程序包的中函数,都要先导入,再使用,因此导入程序包是第一步。在控制台中输入如下命令:library(lattice)library(ggplot2)所有程序包的更新update.packages()注意:R命令对大小写敏感,因此使用命令方式安装和载入程序包时应特别注意。22程序包使用与更新程序包的中函数,都要先导入,再使用,因此89查看程序包帮助文件vegan程序包内部都有哪些函数?分别有什么功能?查询程序包内容最常用的方法:1菜单帮助>Html帮助2查看pdf帮助文档23查看程序包帮助文件vegan程序包内部都有哪些函数?分90查看函数的帮助文件函数的默认值是什么?怎么使用?使用时需要注意什么问题?需要查询函数的帮助。1?t.test2RGui>Help>Htmlhelp3apropos("t.test")4help("t.test")5help.search("t.test")6查看R包pdf手册24查看函数的帮助文件函数的默认值是什么?怎么使用?使用912592帮助文件的内容t.test{stats}#函数名及所在包
FittingLinearModels#标题Description#函数描述Usage#默认选项Arguments#参数Details#详情Author(s)#作者References#参考文献Examples#举例26帮助文件的内容t.test{stats}93练习一安装R并导入程序包1.安装R和Rstudio软件、熟悉菜单2.本地安装程序包:vegan3.调用程序包,查看程序包的帮助library(vegan)查找vegan包中cca函数的帮助输入?cca(试试"??cca")将其中的Example粘贴到控制台中,查看运行的结果。27练习一安装R并导入程序包1.安装R和RstudioR数据集创建数据创建
向量,数组,矩阵,数据框,列表,因子数据输入
scan(),csv文件,excel文件,sas数据…数据存储
write.table(),write.csv(),save()R数据集创建数据创建向量vector概念:用于存储数值型、字符型或逻辑型数据的一维数组。
例子:
a<-c(1,2,5,3,6,-2,4)#数值型向量b<-c("one","two","three")#字符型向量c<-c(TRUE,TRUE,TRUE)#逻辑型向量
注意:单个向量中的数据必须是相同的类型(数值型、字符型或逻辑型)。向量vector概念:用于存储数值型、字符型或逻辑型数据的一R语言基础培训第一讲R语言入门创建重复的向量>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="-")#不规则[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创建重复的向量>rep(2:5,2)向量中元素的访问>a<-c(1,2,5,3,6,-2,4)#向量a中第三个数据>a[3][1]5
#向量a中第一、三、五个数据>a[c(1,3,5)][1]156#向量a中第二到第六个数据>a[2:6][1]2536-2#向量a中数值大于3的所有数据>a[a>3][1]564
#去掉第一个值>a[-1][1]2536-24#去掉前三个值>a[-1:-3][1]36-24向量中元素的访问>a<-c(1,2,5,3,6,矩阵matrix概念:一个二维数组#创建一个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概念:一个二维数组矩阵子集(元素)的提取>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,数据框dataframe使用函数data.frame()创建:mydata<-data.frame(col1,col2,col3,…)其中的列向量col1,col2,col3,…可以是任何数据类型。>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#"$"符合用于选取一个指定的变量。数据框dataframe使用函数data.frame(列表list
R数据类型中最为复杂的一种数据结构。列表就是包含任何类型的对象,可以是若干向量、矩阵、数据框,甚至其他列表的组合。通过函数list()来创建:mylist<-list(object1,object2,…)其中的对象object1,object2,…,可以是向量、矩阵、数据框或列表的任何一种结构。#创建列表>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数据类型中最为复杂的一种数据结构。因子factor概念:是一种向量对象,它给自己的组件指定了一个离散的分类(分组),它的组件由其他等长的向量组成。用函数factor()创建一个因子,levels按序(字母序或数值序)排列。#为province创建因子>province<-c("四川","湖南","江苏","四川","四川","四川","湖南","江苏","湖南","江苏")>pf<-factor(province)#创建province的因子pf>pf[1]四川湖南江苏四川四川四川湖南江苏湖南江苏Levels:湖南江苏四川因子factor概念:是一种向量对象,它给自己的组件指定了一数据的输入数据的输入5导入Excel数据library(RODBC)channel<-odbcConnectExcel("d:/test.xls")mydata<-sqlFetch(channel,"Sheet1")channel2<-odbcConnectExcel2007("d:/test.xlsx")mydata2<-sqlFetch(channel,"Sheet1")6导入SAS数据library(foreign)mydata<-read.sas("d:/test.ssd")library(Hmisc)data<-sas.get("D:/test.ssd")7导入SPSS数据library(foreign)mydata<-read.spss("d:/test.sav")5导入Excel数据2.3数据的存储>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数据的存储>df<-data.frame(obsR数据操作变量创建与删除变量重命名缺失值数据类型转化数据排序数据合并数据子集提取数据重构常用函数数据探索常见循环自编函数R数据操作变量创建与删除数据子集提取变量创建与删除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变量创建与删除mydata<-data.frame(变量的重命名df<-mydata第一种方法:调用编辑器重命名fix(df)第二种方法:使用函数names()重命名names(df)names(df)[1:3]<-c("A","B","C")变量的重命名df<-mydata缺失值的处理缺失值:NA(NotAvailable,不可用)不可能出现的值:NaN(NotaNumber,非数值)函数is.na()可检测缺失值是否存在。例子x<-c(1:3,5,7,NA,9)sum(x)#结果为NAsum(x,na.rm=T)#结果为27缺失值的处理缺失值:NA(NotAvailable,不可数据类型的转换数据类型的转换数据转换例子Rep<-c(1:6)#Rep赋值is.numeric(Rep)#数值型判断:真is.factor(Rep)#因子判断:假Rep<-as.factor(Rep)#转换为因子is.factor(Rep)#因子判断:真数据转换例子Rep<-c(1:6)数据的排序R自带的order()函数plyr程序包的arrange()函数#按x1,x2先后依次排序#R自带的order()排序df[order(-df$x1,df$x2),]#plyr程序包的arrange()函数排序library(plyr)arrange(df,-x1,x2)
数据的排序R自带的order()函数排序例子#创建数据框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()函数df[order(df$weight),]df[order(df$size,df$weight),]df[order(df$size,-df$weight),]#plyr包的arrange()函数library(plyr)arrange(df,weight)arrange(df,size,weight)arrange(df,size,-weight)排序例子#创建数据框#R自带的order()函数排序例子(非同一数据框)有两列数据在一个数据框data
A
B
1
小明
2
小王
3
小李
4
小张
现输入一列数gg
2
1
4
3
要求显示出
A
B
2
小王
1
小明
4
小张
3
小李答案:data[order(gg),]排序例子(非同一数据框)有两列数据在一个数据框data
A数据集的合并列合并#共有变量:IDtotal<-merge(dataA,dataB,by="ID")#解释见代码#共有变量:ID、Countrytotal<-merge(dataA,dataB,by=c("ID","Country")#含有一样的行数,而且以相同顺序排序。total<-cbind(dataA,dataB)数据集的合并列合并列合并例子#创建数据框dataAdataA<-read.table(header=T,text='storyidtitle1lions2tigers3bears')#创建数据框dataBdataB<-read.table(header=T,text='subjectstoryidrating116.7124.5223.3215.2')#合并数据框dataA,dataBmerge(dataA,dataB,"storyid")#将dataA的stroyid重命名为idcolnames(dataA)[1]<-c("Id")merge(x=dataA,y=dataB,by.x="id",by.y="storyid")列合并例子#创建数据框dataA#创建数据框da现在有某一地区的植物名录表格gao.csv,表格内只有两列,分别为"中文名"和"name",
现在有中国IUCN植物红色名录数据库表格chinaIUCN.csv(表格内只有两列,分别为濒危等级"level"和"species"
)。我们需要通过匹配两个表格获得该地区植物的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")列合并的案例分析现在有某一地区的植物名录表格gao.csv,表格内只有两列行合并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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年环保设备采购合同
- 股权投资后回购协议范本版2篇
- 门面转让合同协议书
- 2024年度服装品牌与线下经销商联合营销合同3篇
- 物理化学教学课件:02-01~03
- 委托别人卖东西的合同
- 护栏工程简单合同范本
- 2024版信息技术与维护合同3篇
- 2024年度工厂国际贸易与合作协议2篇
- 棚改区居民安置房买卖合同2024年度
- 无人驾驶环卫行业报告
- 骨关节炎的转录组学研究与基因调控机制
- 家长会示范课件培养孩子养成尊重劳动的习惯
- PVC-U管道施工方案
- 第一季度护理不良事件分析、讨论记录
- 职业生涯规划大赛公务员
- 《人文地理学》课件
- 《农机事故知识》课件
- 《肌力分级及护理》课件
- 酒店客户服务:如何处理紧急情况和应对危机培训课件
- 老年人冬季预防呼吸道疾病
评论
0/150
提交评论