收藏 分销(赏)

R语言基础与应用电子教案课件整套教学课件.pptx

上传人:天**** 文档编号:10089654 上传时间:2025-04-21 格式:PPTX 页数:309 大小:2.55MB
下载 相关 举报
R语言基础与应用电子教案课件整套教学课件.pptx_第1页
第1页 / 共309页
R语言基础与应用电子教案课件整套教学课件.pptx_第2页
第2页 / 共309页
R语言基础与应用电子教案课件整套教学课件.pptx_第3页
第3页 / 共309页
R语言基础与应用电子教案课件整套教学课件.pptx_第4页
第4页 / 共309页
R语言基础与应用电子教案课件整套教学课件.pptx_第5页
第5页 / 共309页
点击查看更多>>
资源描述

1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,

2、DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,DATE yyyy/M/d|2022/1/10,#,R,

3、语言简介,R,语言是用于统计分析,图形表示报告的编程语言和软件环境。,R,语言最早是由新西兰奥克兰大学的,Ross Ihaka,和,Robert Gentleman,创建的,目前由,R Development Core Team,开发和维护。,R,是一套由数据操作、计算和图形展示功能整合而成的套件。包括:有效的数据存储和处理功能,一套完整的数组(特别是矩阵)计算操作符,拥有完整体系的数据分析工具,为数据分析和显示提供的强大图形功能,R,语言的特点,1,简单有效,2,功能强大,3,软件容易扩展,4,强大的社区支持,R,语言是一个开源的语言,可以在互联网上下载安装使用。,打开,R,语言官网,(ht

4、tps:/cran.r-project.org/bin/windows/base/),页面,界面就是,R,语言的最主要交互界面,也是运行、调试大部分代码的地方,这里要注意的是,界面中每行最开始的,符号表示在此输入代码,输入代码之后,然后按,Enter,键执行代码,代码运行后,结果将会在代码的下一行中显示出来。,直接运行代码,该例代码如下:,print(Hello World),在,R,中,print(),函数将指定字符串输出到控制台,并在执行函数后,以“,数字,”形式显示运行结果。当显示结果有多行时,“,数字,”会指明各返回值是第几个。,通过程序脚本来运行,在,R,中查看帮助,此外,用户也可以

5、在“,”后输入命令来查看帮助。在,R,中,在?后输入待查的命令,或者以“,help,(命令)”形式输入,都可以查看对应命令的帮助。,在控制台中输入命令,example(persp),,即可自动运行,R,中的三维图像绘制函数,persp,R,语言的包,R,是开源的软件工具,很多,R,语言用户和爱好者都会扩展,R,的功能模块,我们把这些模块称为包。包是,R,函数、数据、预编译代码以一种定义完善的格式组成的集合,而在计算机上存储包的目录称为库(,library,)。,在,R,中拥有数量巨大的包,这些包横跨各个领域。值得注意的是:,R,自带了一系列默认包(包括,base,、,datasets,、,ut

6、ils,、,grDevices,、,graphics,、,stats,以及,methods,),它们提供了种类繁多的默认函数和数据集,人们无需下载即可使用。,.libPaths(),1 D:/Program Files/R/R-4.0.2/library,search(),1.GlobalEnv package:stats package:graphics,4 package:grDevices package:utils package:datasets,7 package:methods Autoloads package:base,在,R,语言中有许多,R,函数可以用来管理包。第一次安装

7、一个包,使用命令,install.packages(),即可。,在,R,语言中包的安装是指从某个,CRAN,镜像站点下载它并将其放入库中的过程。要在,R,会话中使用它,还需要使用,library(),命令载入这个包。,数据类型与数据对象,R,语言中的数据对象十分丰富,本章主要讲述,R,语言中的各种数据对象定义及使用的基本方法。,数据类型,在每种编程语言和不同的数据库中都有不同的数据类型。通常可以根据数据类型的特点将数据划分为不同的类型,如原始类型、多元组、记录单元、代数数据类型、抽象数据类型、参考类型以及函数类型等。,在,R,中输出基本的数据类型,n print(class(n),1 nume

8、ric,a print(class(a),1 logical,b print(class(b),1 character,j print(class(j),1 complex,在,R,中查看数据的属性。,j print(class(j),1 complex,print(cat(j),3+2iNULL,变量与标量,变量是计算机语言中能储存计算结果或能表示值的抽象概念。变量可以保存程序运行时用户输入的数据、特定运算的结果以及要在窗体上显示的一段数据等。,在,R,语言中有效的变量名称由字母,数字和点或下划线字符组成。变量名以字母或不以数字后跟的点开头,并且紧随其后的字符是不能是数字。如,a,、,wel

9、come,、,a1,、,x2,、,.x,都是合法的命名。,在,R,中对变量赋值。,x y x,1 1,y,1 2,在,R,中对变量赋值,并输出最大值。,max(x x,1 1 2 3 4 5,标量,R,基本数据类型是向量,而标量是指长度为,1,的向量,即长度为,1,的数组。因此标量只是向量的一种特例,并且以单元素向量的形式出现。,使用函数,print,()输出数值。,a b c print(c),1 3,在,R,中输出字符串。,a print(a),1 Hello World,typeof(a),1 character,在,R,中输出逻辑类型,a b typeof(a),1 logical,t

10、ypeof(b),1 logical,在,R,中输出逻辑运算。,TRUE&TRUE,1 TRUE,TRUE&FALSE,1 FALSE,TRUE|TRUE,1 TRUE,TRUE|FALSE,1 TRUE,!TRUE,1 FALSE,在,R,中判断是否空值。,is.na(x),1 TRUE,y is.na(y),1 FALSE,R,语言中的数据对象,R,的数据对象从结构角度来看包括向量、矩阵、数组、列表、因子、数据框,向量,向量是用于存储数值型、字符型或逻辑型数据的一维数组。在,R,中的向量类似于其他编程语言中常见的数组,只用于保存具有相同数据类型的数据。,在,R,中创建向量。,x print

11、x),1 1 2 3 4 5,y print(y),1 1 2 3 4 5 6 7 8 9 10,z print(z),NULL,w print(w),在,R,中用,seq,()来创建向量。,s1 print(s1),1 1 3 5 7 9,在,R,中用,names x names(x)x,owen alex messi,1 2 3,在,R,中访问向量元素。,x x1,1 a,x2,1 b,x3,1 c,在,R,中获取向量中的多个元素。,x xc(1,2),1 a b,xc(1,3),1 a c,在,R,中对向量进行常见运算。,x sum(x),1 45,max(x),1 9,min(x),

12、1 1,mean(x),1 5,length(x),1 9,var(x),1 7.5,sd(x),1 2.738613,median(x),1 5,quantile(x),0%25%50%75%100%,1 3 5 7 9,sort(x),1 1 2 3 4 5 6 7 8 9,rev(x),1 9 8 7 6 5 4 3 2 1,矩阵,在,R,语言中,矩阵(,matrix,)是将数据按行和列组织数据的一种数据对象,相当于二维数组,可以用于描述二维的数据。与向量相似,矩阵的每个元素都拥有相同的数据类型。,在,R,语言中可以使用,matrix(),函数来创建矩阵,其语法格式如下:,matrix(

13、data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL),参数含义如下:,data,:矩阵的元素,默认为,NA,,即未给出元素值的话,各项为,NA,;,nrow,:矩阵的行数,默认为,1,;,ncol,:矩阵的列数,默认为,1,;,byrow,:元素是否按行填充,默认按列;,dimnames,:以字符型向量表示的行名及列名。,在,R,中创建矩阵。,matrix(c(1,2,3,4,5,6,7,8,9),nrow=3),1 ,2 ,3,1,1 4 7,2,2 5 8,3,3 6 9,在,R,中创建矩阵并命名。,x x,1 ,2 ,3,1,1 4 7,2,2

14、 5 8,3,3 6 9,dimnames(x)x,b1 b2 b3,a1 1 4 7,a2 2 5 8,a3 3 6 9,在,R,中创建矩阵,并访问矩阵。,x x,1 ,2 ,3,1,1 4 7,2,2 5 8,3,3 6 9,x1,1,1 1,x1,2,1 4,x2,1,1 2,x2,3,1 8,在,R,语言中,矩阵可与标量或是其他矩阵进行运算。,如定义某矩阵为,A,,某标量为,a,,则,A+x,表示将矩阵的所有值与标量相加。,如定义某矩阵为,A,,另一矩阵为,B,,则,A+B,表示求矩阵,A+B,的和。,如定义某矩阵为,A,,则使用函数,t(),可求出该矩阵的转置矩阵。,如定义某矩阵为,

15、A,,则使用函数,solve(),可求出该矩阵的逆矩阵。,如定义某矩阵为,A,,则使用函数,nrow(),可求出该矩阵的行数,使用函数,ncol(),可求出该矩阵的列数。,在,R,中创建矩阵,并进行矩阵的加减乘除运算。,x x,1 ,2 ,3,1,1 4 7,2,2 5 8,3,3 6 9,x+3,1 ,2 ,3,1,4 7 10,2,5 8 11,3,6 9 12,x-3,1 ,2 ,3,1,-2 1 4,2,-1 2 5,3,0 3 6,x*3,1 ,2 ,3,1,3 12 21,2,6 15 24,3,9 18 27,x/3,1 ,2 ,3,1,0.3333333 1.333333 2.

16、333333,2,0.6666667 1.666667 2.666667,3,1.0000000 2.000000 3.000000,数组,在,R,语言中,可以认为数组是矩阵的扩展,它将矩阵扩展到,2,维以上。如果给定的数组是,1,维的则相当于向量,,2,维的相当于矩阵。,在,R,语言中可以使用,array(),函数创建。,array(),函数的语法格式如下所示:,array(data=NA,,,dim=length(data),,,dimnames=NULL),在,R,中创建数组。,arr1 arr1,1 1 2 3 4 5 6 7 8 9 10,arr2 arr2,1 ,2 ,3 ,4,1

17、1 4 7 10,2,2 5 8 1,3,3 6 9 2,在,R,中访问数组。,arr3 arr3,1,1,2,3,1,1 4 7,2,2 5 8,3,3 6 9,2,1 ,2 ,3,1,10 3 6,2,1 4 7,3,2 5 8,3,1 ,2 ,3,1,9 2 5,2,10 3 6,3,1 4 7,4,1 ,2 ,3,1,8 1 4,2,9 2 5,3,10 3 6,列表,列表是,R,语言中的是对象的集合。,R,语言中的列表与,R,语言中的向量、数组和矩阵不同,它的每个分量的数据类型可以是不同的。,在,R,语言中可以使用,list(),函数来创建列表,其语法格式为:,list(name1

18、value1,name2=value2,.),在,R,中创建列表。,(x(x x1,$name,1 owen messi dandy,x2,$score,1 89 68 71,x1,1 owen messi dandy,x2,1 89 68 71,因子,因子在,R,语言中可以用来表示名义型变量或有序变量。名义变量一般表示类别,如性别,种族等等。,在,R,语言中可以使用,factor(),函数来创建因子变量。,factor(),函数的语法格式为:,f a a,1 x y z x,Levels:x y z,在,R,中创建因子并访问因子。,a a,1 x y z x w,Levels:w x y

19、z,nlevels(a),1 4,levels(a),1 w x y z,ordered(a),1 x y z x w,Levels:w x y (d d d,name sex score,1 张宏 男 90,2 邓兰 女 85,3 刘涛 男 82,4 张峰 男 63,str(d),data.frame:4 obs.of 3 variables:,$name:chr 张宏 邓兰 刘涛 张峰,$sex :chr 男 女 男 男,$score:num 90 85 82 63,在,R,中对数据框进行查看。,s s,x,1 1,2 2,3 3,4 4,5 5,6 6,7 7,8 8,9 9,10 10

20、head(s),x,1 1,2 2,3 3,4 4,5 5,6 6,tail(s),x,5 5,6 6,7 7,8 8,9 9,10 10,R,语言中数据类型的转换,在,R,中判断数据类型。,class(c(1,2,3),1 numeric,class(c(hello),1 character,class(matrix(c(1,2,3),1 matrix array,在,R,中判断数据类型并进行转换。,x is.character(x),1 TRUE,as.factor(x),1 a b c,Levels:a b c,as.data.frame(x),x,1 a,2 b,3 c,as.mat

21、rix(x),1,1,a,2,b,3,c,控制语句与函数,现实世界中的很多事情,有时需要遵循一定的条件去执行,有时需要反复执行,只有满足相应的条件才能做相应的事情,不同的条件会执行不同的操作。,条件结构,R,语言和大多数程序语言一样都存在分支结构和循环结构两种流程控制结构,通过,if,语句和,switch,语句可以实现分支结构控制语句。,条件表达式,也称逻辑表达式,它是一种能够计算出布尔值,(,布尔真值,True,或布尔假值,False),的表达式。,6=7,1 FALSE,FALSE=0,1 TRUE,FALSE&FALSE#取与运算,若运算符两边均为TRUE,则返回TRUE;否则,返回FA

22、LSE。,1 FALSE,is.integer(2.5),1 FALSE,Truth%in%c(what,is,truth),1 FALSE,R,语言中分支结构控制语句中最基本的语句组就是,if-else,语句组。这组语句包含,if,语句,,if-else,语句和,if-else if-else,语句。,单一,if,语句一般用在程序中只有一个分支的情况下,它的语法结构如下,:,if(条件表达式),程序体,判断一个数是否为正数,如果为正数则输出语句,这个数是正数,x 0)print(x是正数),if-else,语句的语法结构和,if,语句的语法结构的区别只在于,如果,if,的条件表达式的判定是假

23、则运行,else,中的程序体,它的语法结构是,:,if(条件表达式),程序体1,else,程序体2,当出现更多的分支时,,R,语言可以使用,if-else if-else,语句,这里,else if,的个数需要通过程序的分支个数来确定,它的语法结构是,:,if(条件表达式),程序体1,else if(条件表达式2),程序体2,else if(条件表达式n-1),程序体n-1,else,程序体n,switch,语句,R语言switch语句的基本语法如下:,switch(表达式,实例1,实例2,),x switch(x,first,second,third,fourth),1 second,x

24、print(x),1 third,循环结构,在R语言中for循环的语法结构如下:,for(循环变量 in 循环区间),循环体,使用for循环的使用,实现1至10的累加和。,sum for(n in 1:10),sum=sum+n,print(sum),1 55,while,循环,在,R,语言中,,while,循环的语法结构和其他语言的,while,循环的语法结构相似,如下,:,while(条件表达式),循环体,while循环的语法结构比较简单,上例实现如下:,sum i while(i=10),sum=sum+i,i print(sum),1 55,break,语句,break,语句的作用是,

25、一旦其被调用,不论循环是否结束都会跳出循环,需要注意的是,和,return(),函数不同,,return(),函数是结束该函数,而,break,语句只会从循环中跳出,使用,break,语句实现,1,至,10,之间整数的累加和,当大于等于,10,时跳出循环,:,sum i while(i=11)break;,sum=sum+i,i print(sum),1 55,repeat,语句,repeat是无限循环语句,并且会在达到循环条件后,使用break语句直接跳出循环,其语法结构如下:,repeat ,语句,if(条件表达式),break,函数,R,语言包含了丰富的内部函数,,R,语言的扩展包也包含

26、了大量的可实用函数。,R语言中如何自定义函数。自定义函数的格式如下:,函数名 sum-function(n),s-0,for(i in 1:n),s sum(100),1 5050,返回值,在R语言中,函数的返回值可以返回任何R对象,尽管返回值通常为列表形式。在程序中可以通过显式调用return()函数,把一个值返回给主调函数。,函数的参数,在R语言中,函数的参数值可以没有,可以有一个,也可以有多个;参数值的类型可以是R语言的基本类型,也可以是函数。,自定义一个函数实现三个数的相加,代码如下:,sum sum(100,200,500)#虽然参数a,c都有默认值,此处对a,c重新赋值,b取值20

27、0,1 2000,sum(100,200)#参数c取默认值,1 2000,sum(a=100,b=200)#通过赋值的方式给a,b赋值,参数c取默认值,1 2000,sum(b=200,a=100)#通过赋值的方式给a,b赋值,可以不按顺序,1 2000,sum(100,200,300)#参数a,c不取默认值,重新赋值,1 1400,程序的向量化实现,在,R,语言中,采用显示循环会涉及多次函数的调用和迭代,常常很耗费时间。很多情况下循环和控制结构可以通过向量化来实现,可以有效提升速度,将下列条件语句改用逻辑索引的向量化实现。x y for(i in 1:length(x),if(xi=2),y

28、i-0,else,yi x y yx=2 yx!=2 x x,1 ,2 ,3,1,1 5 9,2,2 6 10,3,3 7 11,4,4 8 12,apply(x,1,sum),1 15 18 21 24,lapply(),函数,lapply()函数用来对列表、数据框等数据集进行循环,并返回和x长度同样的列表作为结果数据集,参数与apply()函数的参数相同,计算list中的每个key对应的数据的分位数。,代码如下:,#构建一个1ist数据集x,分别包括a,b,c三个key值。,x lapply(x,quantile),$a,0%25%50%75%100%,1.00 3.25 5.50 7.7

29、5 10.00,$b,0%25%50%75%100%,0.04978707 0.25160736 1.00000000 5.05366896 20.08553692,$c,0%25%50%75%100%,0.0 0.0 0.5 1.0 1.0,sapply(),函数,sapply()函数与lapply()函数其实是一样的,只是返回的结果是一个向量或者是一个矩阵,当无法将一个结果简化为矩阵时,就会返回一个列表。,sapply()函数的语法格式如下:,sapply(X,FUN,,simplify=TRUE,USE.NAMES=TRUE),sapply()函数使用如下所示:,x x,$a,1 1 2

30、 3 4 5,$b,1-0.55825260-0.64523388 0.65826347-0.02316176 1.07831357,$c,1 0.10549647-0.01716549 1.67225328 0.26572079 0.89511642,sapply(x,mean),a b c,3.0000000 0.1019858 0.5842843,vapply(),函数,vapply,函数就是,sapply,函数的升级版本,,vapply,函数通过付加一个参数来设定每次返回值的模板。与,sapply(),类似,,vapply(),也会对,apply,结果进行简化,tapply(),函数,

31、tapply(),函数允许根据某些变量的值,把原始数据分割为若干组,然后对每一组数据应用特定的操作。,mapply(),函数,多参数版本的,sapply(),。第一次计算传入各组向量的第一个元素到,FUN,,进行结算得到结果;第二次传入各组向量的第二个元素,得到结果;第三次传入各组向量的第三个元素以此类推。,rapply(),函数,rapply(),函数是,lapply(),函数的一个递归版本,它只负责处理列表,(list),类型数据,对列表中的每个元素进行递归遍历,如果,list,包括子元素则继续遍历。,数据的读写与预处理,在真实的数据分析场景中,获取到的原始数据一般都存在有缺失值、重复值、

32、异常值或格式等等问题,有必要对数据进行预处理,才能进行下一步的数据分析工作。,R语言基本的输入输出功能主要包括三种形式:键盘录入和屏幕输出、文本格式的输入输出、自有二进制格式的输入输出。,工作目录是数据分析时输入输出的一个默认文件夹。,在设置工作目录之前,还需要确保所要设置的文件夹是否存在。这可以利用函数dir.exists()来判断文件夹是否存在,如不存在,可以利用函数dir.create()新建一个文件夹,setwd(d:/R语言实训)#无法设置,可能是文件夹不存在,Error in setwd(d:/R语言实训):cannot change working directory,dir.e

33、xists(d:/R语言实训,)#判断文件夹是否存在,1FALSE,dir.create(d:/R语言实训)#不存在的话,可以新建一个,setwd(d:/R语言实训)#设置工作目录,getwd()#获取当前工作目录,1d:/R语言实训,向量的输入,scan()函数可以用于直接键盘录入,以构建一个向量,该函数也可以利用参数file直接读取文件中的向量,如:,x=1:8,write(x,data.txt)#将一个数值向量保存在文件data.txt中,scan(data.txt)#利用scan()函数将这个数值向量写进来,Read 8 items,112345678,数据文件的读取,在数据分析中,数

34、据经常采用数据表的形式进行存储和计算,即每列代表一个变量,每行代表一个个体或一条记录。矩阵和数据框从形式上看都是行列表,因此都能以数据表的形式进行输出,但写入数据表文件时,R语言会以数据框的形式写入。,set.seed(1),x=matrix(rnorm(12),3),write.csv(x,data.csv)#输出一个csv文件,read.csv(data.csv),X V1 V2 V3 V4,1 1 -0.6264538 1.5952808 0.4874291-0.3053884,2 2 0.1836433 0.3295078 0.7383247 1.5117812,3 3 -0.8356

35、286 -0.8204684 0.5757814 0.3898432,如上所示,对于该文件,read.csv()函数并不能自动识别行号,而将自动生成的行名作为一列写了进来。此时,可以利用参数row.names指定第一列为行名,如:,read.csv(data.csv,row.names=1),V1 V2 V3 V4,1-0.6264538 1.5952808 0.4874291 -0.3053884,2 0.1836433 0.3295078 0.7383247 1.5117812,3-0.8356286 -0.8204684 0.5757814 0.3898432,R,语言中,read.ta

36、ble(),函数为基础包自带函数,可以读取文本数据和,csv,格式数据,使用,read.table,函数读取文件名为,train.txt,的文件,train library(readxl),read_excel(data.xlsx,sheet=1),数据的输出,在数据分析的过程中,当需要显示某个变量的值时,可以在命令提示符后直接键入变量的名称,但在循环结构中,必须使用函数对其进行屏幕输出。,for(i in 1:2)i,#在循环结构中,仅使用变量名无法输出变量的内容,for(i in 1:2),print(i)#可以使用print()函数指定输出i的值,1 1,1 2,for(i in 1:2

37、),cat(i)#也可以使用cat()函数指定输出1的值,12,向量的输出,R语言可以使用write()函数将一个向量输出到文件中。此外,cat()函数也可以利用参数file输出向量。,如下代码所示:,a=1:8,write(x,data.txt)#将一个数值向量保存到文件data.txt中,b=rep(c(T,F),each=4),write(y,data.txt,appends=T)#在文件末尾添加一个逻辑向量,c=letters1:3,write(z,data.txt,append=T)#在文件末尾再添加一个字符向量,d=as,factor(rep(c(a,b),4),cat(因子向量包

38、括两个类别:a、br,file=data.txt,append=T),write(d,data.txt,append=T)#在文件末尾再添加一个因子向量,数据文件的输出,1)write.table(),函数,write.table(),函数可以用来输出,CSV,格式的文件,其语法格式如下,:,write.table(x,file=,append=FALSE,quote=TRUE,sep=,eol=n,na=NA,dec=.,row.names=TRUE,col.names=TRUE,qmethod=c(escape,double),fileEncoding=),set.seed(1),x=ma

39、trix(rnorm(12),3),write.csv(x,file=data.csv)#将矩阵x输出到文件data.csv中,写入,Excel,文件,本小节以包openxlsx为例,对xlsx格式文件的读取进行讲解。在使用这个包之前,首先要用install.packages()函数安装这个包,命令如下:,install.packages(openxlsx),write.xlsx(),函数将数据保存为,xlsx,格式,用法如下,:,datawrite.xlsx(data,data.xlsx)#将数据框data以xlsx格式进行输出,如上所示,该函数将一个数据框变量保存为,xlsx,格式文件,并

40、默认保存在工作目录下。这个文件只包含一个名称为“Sheetl”的表。,由于一个xlsx格式文件可以包含多个表,因此可以将多个不同结构的数据保存在同一个文件的不同表中,如:,ab=matrix(1:6,2),c=1:3,d=list(a,b,c),write.xlsx(d,data.xlsx,sheetName=letters1:3),工作空间的保存和加载,save()函数用于将数据保存为RData格式。在保存数据时,该命令对于变量的类型没有要求,可以保存任意类型的数据,如:,a=1:10#构建一个向量,b=matrix(1:6,2)#构建一个矩阵,c-data.frame(x1=1:3,x2=

41、letters1:3)构建一个数据框,d=list(a,b,c)#构建一个列表,save(a,b,c,d,file=sample.rdata)#将以上变量保存到文件sample.rdata中,变量的预处理,在,R,语言中,数据集常常使用数据框的形式表示。,如下代码所示:,hospital patients costs df df,hospital patients costs,1 New York 150 3.1,2 California 350 2.5,2.,改变变量的名称,如下代码所示:,df$costs_euro df$costs df$patients df,hospital pati

42、ents costs_euro,1 New York 100 3.1,2 California 300 2.5,3.,定义缺失值,如下代码所示:,#,将年龄显示为,99,岁的定义为缺失值,df$degreedf$patients=300-NA,#,某一变量,筛选条件,variablecondition df$degreedf$patients=200 df$degreedf$patients 200 df,hospital patients costs_euro degree,1 New York 100 3.1 mild,2 California 300 2.5 serious,#degre

43、e,为新建变量,且为满足,patient,的逻辑筛选条件下建立的新变量,变量重命名,在,R,语言中,变量的重命名常用的方法,分别是利用,names(),colnames(),rownames(),等函数进行修改,这些函数是在原数据集中修改变量名。,变量类型的转换,R,语言中,可以使用以下函数判断变量类型和对变量类型进行转换:,is/as.numeric(),是否,/,转换为数值型,is/as.character(),是否,/,转换为字符型,is/as.vector(),是否,/,转换为向量,is/as.matrix(),是否,/,转换为矩阵,is/as.data.frame(),是否,/,转换

44、为数据框,is/as.factor(),是否,/,转换为因子,is/as.logical(),是否,/,转换为逻辑型,字符串的处理,R,语言中分割字符串是使用,strsplit(),函数来实现的,,strsplit(),函数是一个拆分函数,该函数可以使用正则表达式来对字符串进行匹配拆分。它的语法结构是,:,strsplit(x,split,fixed=FALSE,perl=FALSE,useBytes=FALSE),对字符串It requires non-string elements to be converted to strings.中间的空格进行拆分。,第一种拆分方式的代码如下:,x

45、y y,1,1 It requires non-string elements to,6 be converted to strings.,第二种拆分方式的代码如下,:,#,用,NULL,串拆分,y y,1,1 I t r e q u i r e s n o n-s t r i n g,23 e l e m e n t s t o b e c o n v e r,45 t e d t o s t r i n g s.,第三种拆分方式的代码如下:,y y,1,1 It requires non-string elements to be converted to strings.,字符串拼接,将

46、c(a,b,c,d,e)和c(A,B,C,D,E)拼接,拼接方式为:(1)直接拼接;(2)用空串拼接;(1)用拼接。,代码如下:,x y paste(x,y)#,拼接方式,1,将两个字符串向量拼接,,sep,取默认值,1 a A b B c C d D e E,paste(x,y,sep=)#,使用空格进行拼接,结果与拼接方式,1,相同,1 a A b B c C d D e E,paste(x,y,sep=)#,拼接方式,2,将两个字符串向量用空串拼接,1 aA bB cC dD eE,paste(x,y,sep=)#,拼接方式,3,将两个字符串向量用,拼接,1 aA bB cC dD eE

47、字符串长度计算,计算字符串长度可以用nchar()函数来实现。,判断,c(asfef,stuff.blah.yech,year-month-day,NA,ddd.ff),中每个字符串的长度。,代码如下,:,x nchar(x),1 6 15 15 NA 0 8,nzchar(x),1 TRUE TRUE TRUE TRUE FALSE TRUE,字符串截取,截取字符串通常使用,substr(),函数和,substring(),函数,两个函数的功能几乎是相同的,只是参数设置不同。这两个函数的语法结构如下:,substr(x,start,stop),substring(text,first,la

48、st=1000000L),substr(x,start,stop)-value,substring(text,first,last=1000000L)sprintf(Hello:%s,Word),1 Hello:Word,使用,stringr,包处理字符串,使用,stringr,包之前,先需要安装和加载,stringr,包。,install.packges(stringr),library(stringr),查看字符向量,c(ssss,str_str),中是否包含有字符串,str,,如果不包含,则在相应位置输出空值;如果包含,则在相应位置返回该字符串。,str_match(c(ssss,str

49、str),str),1,1,NA,2,str,日期变量的处理和转换,在R语言的实际项目分析中,时间是一个重要的数据,在很多数据分析项目中时间序列是重要的分析指标,本节讲述R语言是如何处理日期和时间的。,程序员在编程中遇到的第一个与时间相关的问题大多是如何取系统时间,R语言取系统时间常使用的函数是date()函数、Sys.Date()函数和Sys.time()函数。,date(),1 Sat Jan 09 12:13:29 2021,class(date(),1 character,在R语言中,将文本转换成日期和时间通常使用as.Date()函数、as.POSIXct()函数、as.POSIX

50、lt()函数、strptime()函数。,下面是这几个函数的语法结构:,as.Date(x,format),as.POSIXct(x.format.tz=,.),as.POSIXIt(x.format,tz=,.),strptime(x,format,tz=),字符串类型的数据可以转换成时间类型的,当然时间类型的数据也可以转化为字符串类型的,常用的函数有format()函数和strftime()函数,它们的语法格式如下:,format(x,,,format,,,tz=),strftime(x,,,format,,,tz=),清洗重复数据,duplicated()函数会在数值第一次出现的时候返回

展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服