R语言基础与应用电子教案(全)完整版课件整套教学课件.pptx

上传人(卖家):三亚风情 文档编号:3468303 上传时间:2022-09-02 格式:PPTX 页数:309 大小:2.57MB
下载 相关 举报
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、R语言简介语言简介 R语言是用于统计分析,图形表示报告的编程语言和软件环境。R语言最早是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman创建的,目前由R Development Core Team开发和维护。R是一套由数据操作、计算和图形展示功能整合而成的套件。包括:有效的数据存储和处理功能,一套完整的数组(特别是矩阵)计算操作符,拥有完整体系的数据分析工具,为数据分析和显示提供的强大图形功能 R语言的特点语言的特点 1简单有效简单有效 2功能强大功能强大 3软件容易扩展软件容易扩展 4强大的社区支持强大的社区支持 R语言是一个开源的语言,可以在互联网上下载安装使用。

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

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

4、phics、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函数可以用来管理包。第一次安装一个包,使用命令install.packages()即可。在R语言

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

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

7、变量赋值,并输出最大值。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 typeof(b)1 logical在R中输出逻辑运算。TRUE&TRUE 1 TRUE TRUE&FALSE 1 FALSE TRUE|TRUE 1 TRUE TRU

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

9、rint(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)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

10、 6 7 8 9 rev(x)1 9 8 7 6 5 4 3 2 1矩阵 在R语言中,矩阵(matrix)是将数据按行和列组织数据的一种数据对象,相当于二维数组,可以用于描述二维的数据。与向量相似,矩阵的每个元素都拥有相同的数据类型。在R语言中可以使用matrix()函数来创建矩阵,其语法格式如下:matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)参数含义如下:data:矩阵的元素,默认为NA,即未给出元素值的话,各项为NA;nrow:矩阵的行数,默认为1;ncol:矩阵的列数,默认为1;byrow:元素是否按行填充,默认按列;dim

11、names:以字符型向量表示的行名及列名。在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 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 ,31,1 4 72,2 5 83,3 6 9 x1,11 1 x1,21 4 x2,11 2 x2,31 8 在R语言中,矩阵可与标量或是其他矩阵进行运算。如定义某矩

12、阵为A,某标量为a,则A+x表示将矩阵的所有值与标量相加。如定义某矩阵为A,另一矩阵为B,则A+B表示求矩阵A+B的和。如定义某矩阵为A,则使用函数t()可求出该矩阵的转置矩阵。如定义某矩阵为A,则使用函数solve()可求出该矩阵的逆矩阵。如定义某矩阵为A,则使用函数nrow()可求出该矩阵的行数,使用函数ncol()可求出该矩阵的列数。在R中创建矩阵,并进行矩阵的加减乘除运算。x x ,1 ,2 ,31,1 4 72,2 5 83,3 6 9 x+3 ,1 ,2 ,31,4 7 102,5 8 113,6 9 12 x-3 ,1 ,2 ,31,-2 1 42,-1 2 53,0 3 6 x

13、*3 ,1 ,2 ,31,3 12 212,6 15 243,9 18 27 x/3 ,1 ,2 ,31,0.3333333 1.333333 2.3333332,0.6666667 1.666667 2.6666673,1.0000000 2.000000 3.000000数组数组 在R语言中,可以认为数组是矩阵的扩展,它将矩阵扩展到2维以上。如果给定的数组是1维的则相当于向量,2维的相当于矩阵。在R语言中可以使用array()函数创建。array()函数的语法格式如下所示:array(data=NA,dim=length(data),dimnames=NULL)在R中创建数组。arr1 a

14、rr1 1 1 2 3 4 5 6 7 8 9 10 arr2 arr2 ,1 ,2 ,3 ,4 1,1 4 7 10 2,2 5 8 1 3,3 6 9 2在R中访问数组。arr3 arr3,1 ,1,2,31,1 4 72,2 5 83,3 6 9,2 ,1 ,2 ,31,10 3 62,1 4 73,2 5 8,3 ,1 ,2 ,31,9 2 52,10 3 63,1 4 7,4 ,1 ,2 ,31,8 1 42,9 2 53,10 3 6列表列表 列表是R语言中的是对象的集合。R语言中的列表与R语言中的向量、数组和矩阵不同,它的每个分量的数据类型可以是不同的。在R语言中可以使用list

15、()函数来创建列表,其语法格式为:list(name1=value1,name2=value2,.)在R中创建列表。(x(x x1$name1 owen messi dandy x2$score1 89 68 71 x11 owen messi dandy x21 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

16、x y 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 score1 张宏 男 902 邓兰 女 853 刘涛 男 824 张峰 男 63 str(d)data.frame:4 obs.of 3 variables:$name:chr 张宏 邓兰 刘涛 张峰$sex :chr 男 女 男 男$score:num 90 85 82 63在R中对数据框进行查看。s s x1 12 23 34 45 56 67 78 89 910 10 head(s)x1 12 23 34 4

17、5 56 6 tail(s)x5 56 67 78 89 910 10R语言中数据类型的转换语言中数据类型的转换 在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 cLevels:a b c as.data.frame(x)x1 a2 b3 c as.matrix(x),11,a 2,b 3,c控制语句与函数控制语句与函数 现实世界中的很多事情

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

19、at,is,truth)1 FALSE R语言中分支结构控制语句中最基本的语句组就是if-else语句组。这组语句包含if语句,if-else语句和if-else if-else 语句。单一if语句一般用在程序中只有一个分支的情况下,它的语法结构如下:if(条件表达式)程序体 判断一个数是否为正数,如果为正数则输出语句这个数是正数 x 0)print(x是正数)if-else语句的语法结构和if语句的语法结构的区别只在于,如果if的条件表达式的判定是假,则运行else中的程序体,它的语法结构是:if(条件表达式)程序体1 else 程序体2 当出现更多的分支时,R语言可以使用if-else i

20、f-else语句,这里else if的个数需要通过程序的分支个数来确定,它的语法结构是:if(条件表达式)程序体1 else if(条件表达式2)程序体2else if(条件表达式n-1)程序体n-1 else 程序体nswitch语句语句 R语言switch语句的基本语法如下:switch(表达式,实例1,实例2,)x switch(x,first,second,third,fourth)1 second x print(x)1 third循环结构循环结构 在R语言中for循环的语法结构如下:for(循环变量 in 循环区间)循环体 使用for循环的使用,实现1至10的累加和。sum for

21、(n in 1:10)sum=sum+n print(sum)1 55while循环循环在R语言中,while循环的语法结构和其他语言的while循环的语法结构相似,如下:while(条件表达式)循环体 while循环的语法结构比较简单,上例实现如下:sum i while(i=10)sum=sum+ii print(sum)1 55break语句语句 break语句的作用是,一旦其被调用,不论循环是否结束都会跳出循环,需要注意的是,和return()函数不同,return()函数是结束该函数,而break语句只会从循环中跳出 使用break语句实现1至10之间整数的累加和,当大于等于10时跳

22、出循环:sum i while(i=11)break;sum=sum+i i print(sum)1 55repeat语句语句 repeat是无限循环语句,并且会在达到循环条件后,使用break语句直接跳出循环,其语法结构如下:repeat 语句 if(条件表达式)break 函数函数 R语言包含了丰富的内部函数,R语言的扩展包也包含了大量的可实用函数。R语言中如何自定义函数。自定义函数的格式如下:函数名 sum-function(n)s-0 for(i in 1:n)s sum(100)1 5050返回值返回值 在R语言中,函数的返回值可以返回任何R对象,尽管返回值通常为列表形式。在程序中可

23、以通过显式调用return()函数,把一个值返回给主调函数。函数的参数函数的参数 在R语言中,函数的参数值可以没有,可以有一个,也可以有多个;参数值的类型可以是R语言的基本类型,也可以是函数。自定义一个函数实现三个数的相加,代码如下:sum sum(100,200,500)#虽然参数a,c都有默认值,此处对a,c重新赋值,b取值2001 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 2000sum(100,20

24、0,300)#参数a,c不取默认值,重新赋值1 1400程序的向量化实现程序的向量化实现 在R语言中,采用显示循环会涉及多次函数的调用和迭代,常常很耗费时间。很多情况下循环和控制结构可以通过向量化来实现,可以有效提升速度将下列条件语句改用逻辑索引的向量化实现。x y for(i in 1:length(x)if(xi=2)yi-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 24lapply()函数函数 lapply()函数用来对列表、数据框等数据

25、集进行循环,并返回和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.75 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.0sapply()函数 sapply()函数与lapp

26、ly()函数其实是一样的,只是返回的结果是一个向量或者是一个矩阵,当无法将一个结果简化为矩阵时,就会返回一个列表。sapply()函数的语法格式如下:sapply(X,FUN,,simplify=TRUE,USE.NAMES=TRUE)sapply()函数使用如下所示:x x$a1 1 2 3 4 5$b1-0.55825260-0.64523388 0.65826347-0.02316176 1.07831357$c1 0.10549647-0.01716549 1.67225328 0.26572079 0.89511642 sapply(x,mean)a b c 3.0000000 0.

27、1019858 0.5842843vapply()函数函数 vapply函数就是sapply函数的升级版本,vapply函数通过付加一个参数来设定每次返回值的模板。与sapply()类似,vapply()也会对apply结果进行简化tapply()函数函数 tapply()函数允许根据某些变量的值,把原始数据分割为若干组,然后对每一组数据应用特定的操作。mapply()函数函数 多参数版本的sapply()。第一次计算传入各组向量的第一个元素到FUN,进行结算得到结果;第二次传入各组向量的第二个元素,得到结果;第三次传入各组向量的第三个元素以此类推。rapply()函数函数 rapply()函

28、数是lapply()函数的一个递归版本,它只负责处理列表(list)类型数据,对列表中的每个元素进行递归遍历,如果list包括子元素则继续遍历。数据的读写与预处理 在真实的数据分析场景中,获取到的原始数据一般都存在有缺失值、重复值、异常值或格式等等问题,有必要对数据进行预处理,才能进行下一步的数据分析工作。R语言基本的输入输出功能主要包括三种形式:键盘录入和屏幕输出、文本格式的输入输出、自有二进制格式的输入输出。工作目录是数据分析时输入输出的一个默认文件夹。在设置工作目录之前,还需要确保所要设置的文件夹是否存在。这可以利用函数dir.exists()来判断文件夹是否存在,如不存在,可以利用函数

29、dir.create()新建一个文件夹 setwd(d:/R语言实训)#无法设置,可能是文件夹不存在 Error in setwd(d:/R语言实训):cannot change working directory dir.exists(d:/R语言实训,)#判断文件夹是否存在 1FALSE dir.create(d:/R语言实训)#不存在的话,可以新建一个 setwd(d:/R语言实训)#设置工作目录 getwd()#获取当前工作目录 1d:/R语言实训向量的输入向量的输入 scan()函数可以用于直接键盘录入,以构建一个向量,该函数也可以利用参数file直接读取文件中的向量,如:x=1:8

30、 write(x,data.txt)#将一个数值向量保存在文件data.txt中 scan(data.txt)#利用scan()函数将这个数值向量写进来 Read 8 items 112345678数据文件的读取数据文件的读取 在数据分析中,数据经常采用数据表的形式进行存储和计算,即每列代表一个变量,每行代表一个个体或一条记录。矩阵和数据框从形式上看都是行列表,因此都能以数据表的形式进行输出,但写入数据表文件时,R语言会以数据框的形式写入。set.seed(1)x=matrix(rnorm(12),3)write.csv(x,data.csv)#输出一个csv文件read.csv(data.c

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

32、1 -0.30538842 0.1836433 0.3295078 0.7383247 1.51178123-0.8356286 -0.8204684 0.5757814 0.3898432 R语言中read.table()函数为基础包自带函数,可以读取文本数据和csv格式数据 使用read.table函数读取文件名为train.txt的文件 train library(readxl)read_excel(data.xlsx,sheet=1)数据的输出数据的输出 在数据分析的过程中,当需要显示某个变量的值时,可以在命令提示符后直接键入变量的名称,但在循环结构中,必须使用函数对其进行屏幕输出。f

33、or(i in 1:2)i#在循环结构中,仅使用变量名无法输出变量的内容 for(i in 1:2)print(i)#可以使用print()函数指定输出i的值 1 1 1 2 for(i in 1:2)cat(i)#也可以使用cat()函数指定输出1的值 12向量的输出向量的输出R语言可以使用write()函数将一个向量输出到文件中。此外,cat()函数也可以利用参数file输出向量。如下代码所示:a=1:8write(x,data.txt)#将一个数值向量保存到文件data.txt中b=rep(c(T,F),each=4)write(y,data.txt,appends=T)#在文件末尾添加

34、一个逻辑向量c=letters1:3write(z,data.txt,append=T)#在文件末尾再添加一个字符向量d=as,factor(rep(c(a,b),4)cat(因子向量包括两个类别: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,

35、dec=.,row.names=TRUE,col.names=TRUE,qmethod=c(escape,double),fileEncoding=)set.seed(1)x=matrix(rnorm(12),3)write.csv(x,file=data.csv)#将矩阵x输出到文件data.csv中写入写入Excel文件文件 本小节以包openxlsx为例,对xlsx格式文件的读取进行讲解。在使用这个包之前,首先要用install.packages()函数安装这个包,命令如下:install.packages(openxlsx)write.xlsx()函数将数据保存为xlsx格式,用法如下

36、:datawrite.xlsx(data,data.xlsx)#将数据框data以xlsx格式进行输出 如上所示,该函数将一个数据框变量保存为xlsx格式文件,并默认保存在工作目录下。这个文件只包含一个名称为“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格式。在保存数据时,该命令对

37、于变量的类型没有要求,可以保存任意类型的数据,如:a=1:10#构建一个向量 b=matrix(1:6,2)#构建一个矩阵 c-data.frame(x1=1:3,x2=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 Cal

38、ifornia 350 2.5 2.改变变量的名称改变变量的名称 如下代码所示:df$costs_euro df$costs df$patients df hospital patients 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 hospita

39、l patients costs_euro degree 1 New York 100 3.1 mild 2 California 300 2.5 serious#degree为新建变量,且为满足patient的逻辑筛选条件下建立的新变量变量重命名变量重命名 在R语言中,变量的重命名常用的方法,分别是利用names(),colnames(),rownames()等函数进行修改,这些函数是在原数据集中修改变量名。变量类型的转换变量类型的转换 R语言中,可以使用以下函数判断变量类型和对变量类型进行转换:is/as.numeric()是否/转换为数值型 is/as.character()是否/转换为

40、字符型 is/as.vector()是否/转换为向量 is/as.matrix()是否/转换为矩阵 is/as.data.frame()是否/转换为数据框 is/as.factor()是否/转换为因子 is/as.logical()是否/转换为逻辑型字符串的处理字符串的处理 R语言中分割字符串是使用strsplit()函数来实现的,strsplit()函数是一个拆分函数,该函数可以使用正则表达式来对字符串进行匹配拆分。它的语法结构是:strsplit(x,split,fixed=FALSE,perl=FALSE,useBytes=FALSE)对字符串It requires non-string

41、 elements to be converted to strings.中间的空格进行拆分。第一种拆分方式的代码如下:x 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 n

42、on-string elements to be converted to strings.字符串拼接字符串拼接将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,

43、sep=)#拼接方式3,将两个字符串向量用拼接1 aA bB cC dD eE字符串长度计算字符串长度计算 计算字符串长度可以用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

44、,start,stop)substring(text,first,last=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,如果不包含,则在相应位置输出空值;如果包含,则在相应位置返

45、回该字符串。str_match(c(ssss,str_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.D

46、ate()函数、as.POSIXct()函数、as.POSIXlt()函数、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=)清洗重复数据清洗重复数据 duplicat

47、ed()函数会在数值第一次出现的时候返回FAL.SE,在数值重复出现的时候返回TRUE,代码如下:x duplicated(x)1 FALSE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE 经过查询,向量x中有TRUE值,说明x中包含重复值。去除重复值的第二个步骤是查找重复值的索引值,该操作使用which()函数来完成,代码如下:x y which(y)#返回重复值的索引位置 1 4 5 8 9 去除重复值的主要思想就是把上面找到的索引值以外的数据从目标数据中取出并放到一个新的对象中。x y new new 1 5 6 7 8 9缺失数据处理缺失数据处

48、理 R语言中,NA为Not Available的缩写,代表缺失值,NaN为Not a Number的缩写,代表不可能值,Inf和-Inf代表正无穷和负无穷。函数 is.na()、is.nan()和is.infinite()可以分别用来识别缺失值、不可能值和无穷值。每个返回结果都是TRUE或FALSE。y is.na(y)1 FALSE FALSE FALSE TRUE TRUE is.nan(y)1 FALSE FALSE FALSE TRUE FALSE is.infinite(y)1 FALSE FALSE TRUE FALSE FALSE缺失数据的处理缺失数据的处理 一般来说,缺失值的处

49、理包括两个步骤,即缺失数据的识别和缺失值处理。在R语言中缺失值通常以NA表示,可以使用函数is.na()判断缺失值是否存在,另外函数complete.cases()可识别样本数据是否完整从而判断缺失情况。在对是否存在缺失值进行判断之后需要进行缺失值处理,常用的方法有删除法、替换法、插补法等。使用均值替换法对缺失数据进行填充 data data2:3,5 data ,1 ,2 ,3 ,4 ,51,0 -1 -1 -4 -22,7 -5 -7 3 NA3,-5 4 -3 2 NA4,-3 0 4 3 1 datais.na(data)data ,1 ,2 ,3 ,4 ,51,0 -1 -1 -4

50、-2.00000002,7 -5 -7 3 -0.38888893,-5 4 -3 2 -0.38888894,-3 0 4 3 1.0000000异常值识别和处理异常值识别和处理 异常值指的是样本中的极少数样本点,其数值明显偏离于所属样本的绝大部分观测值,所以也称为离群点。利用3 原则过滤数据中的异常值如下代码所示:data daMean daSD cutoff outindex-datacutoff2 outindex 1 FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE 13 FALSE FAL

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(R语言基础与应用电子教案(全)完整版课件整套教学课件.pptx)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|