R软件及编程应用第四讲报告

上传人:枫** 文档编号:570036888 上传时间:2024-08-01 格式:PPT 页数:92 大小:1,017KB
返回 下载 相关 举报
R软件及编程应用第四讲报告_第1页
第1页 / 共92页
R软件及编程应用第四讲报告_第2页
第2页 / 共92页
R软件及编程应用第四讲报告_第3页
第3页 / 共92页
R软件及编程应用第四讲报告_第4页
第4页 / 共92页
R软件及编程应用第四讲报告_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《R软件及编程应用第四讲报告》由会员分享,可在线阅读,更多相关《R软件及编程应用第四讲报告(92页珍藏版)》请在金锄头文库上搜索。

1、R R软件及编程应用第四讲软件及编程应用第四讲报告报告第四讲:数据读写、预处理及字符串操作第四讲:数据读写、预处理及字符串操作一、数据读写一、数据读写二、数据预处理二、数据预处理三、字符串操作三、字符串操作一、数据读写一、数据读写一、数据读写一、数据读写1、连接键盘与显示器、连接键盘与显示器2、读写文件、读写文件3、连接数据库、连接数据库4、从、从Hadoop中获取数据中获取数据 1 1 1 1、连接键盘与显示器、连接键盘与显示器、连接键盘与显示器、连接键盘与显示器 R R语言中提供了多种多样的输入语言中提供了多种多样的输入语言中提供了多种多样的输入语言中提供了多种多样的输入(I)/(I)/输

2、出输出输出输出(O)(O)功能。功能。功能。功能。R R提供了多个命令来连接键盘和显示器,包括提供了多个命令来连接键盘和显示器,包括提供了多个命令来连接键盘和显示器,包括提供了多个命令来连接键盘和显示器,包括scan()scan()、readlinereadline() ()、print()print()和和和和cat()cat()。uu(1 1)使用)使用)使用)使用scan()scan()函数:使用函数:使用函数:使用函数:使用scan()scan()函数可从文件中读取或函数可从文件中读取或函数可从文件中读取或函数可从文件中读取或从键盘输入一个向量,可以是数值型或字符型向量,甚至可从键盘输

3、入一个向量,可以是数值型或字符型向量,甚至可从键盘输入一个向量,可以是数值型或字符型向量,甚至可从键盘输入一个向量,可以是数值型或字符型向量,甚至可读取数据来形成一个列表。读取数据来形成一个列表。读取数据来形成一个列表。读取数据来形成一个列表。函数功能描述:函数功能描述:函数功能描述:函数功能描述:readdataintoavectororlistfromthereaddataintoavectororlistfromtheconsoleorfileconsoleorfile函数定义形式:函数定义形式:函数定义形式:函数定义形式:参数说明参数说明参数说明参数说明(1)(1):l lfilefi

4、le从文件中读取数据时,引号中输入文件路径。从文件中读取数据时,引号中输入文件路径。从文件中读取数据时,引号中输入文件路径。从文件中读取数据时,引号中输入文件路径。 从键从键从键从键盘中输入时,此参数为空。盘中输入时,此参数为空。盘中输入时,此参数为空。盘中输入时,此参数为空。l lwhatwhat默认情况下声明读入为字符型数据。还可设置读入默认情况下声明读入为字符型数据。还可设置读入默认情况下声明读入为字符型数据。还可设置读入默认情况下声明读入为字符型数据。还可设置读入数据的精度数据的精度数据的精度数据的精度/ /类型,例如类型,例如类型,例如类型,例如what=integer(0)what

5、=integer(0),what=what=numeric(0)numeric(0),what=character(0)what=character(0)。如果读入数据有字符。如果读入数据有字符。如果读入数据有字符。如果读入数据有字符和数值,可用和数值,可用和数值,可用和数值,可用what=“”what=“”来声明,则会把读入的数值隐式来声明,则会把读入的数值隐式来声明,则会把读入的数值隐式来声明,则会把读入的数值隐式的转换成字符。的转换成字符。的转换成字符。的转换成字符。l lsepsep指定各个读入数据之间的分隔符,默认情况下为空指定各个读入数据之间的分隔符,默认情况下为空指定各个读入数据

6、之间的分隔符,默认情况下为空指定各个读入数据之间的分隔符,默认情况下为空白字符,包括空格、回车、换行符白字符,包括空格、回车、换行符白字符,包括空格、回车、换行符白字符,包括空格、回车、换行符/tab/tab和水平制表符。和水平制表符。和水平制表符。和水平制表符。参数说明参数说明参数说明参数说明(2)(2):l l还可通过还可通过还可通过还可通过listlist指定读入变量的变量名,同时生成的对象为指定读入变量的变量名,同时生成的对象为指定读入变量的变量名,同时生成的对象为指定读入变量的变量名,同时生成的对象为列表,此时可以同时读入字符和数值。列表,此时可以同时读入字符和数值。列表,此时可以同

7、时读入字符和数值。列表,此时可以同时读入字符和数值。l lskipskip从第几行开始读入数据。从第几行开始读入数据。从第几行开始读入数据。从第几行开始读入数据。l lnlinesnlines指定最大读入行数。指定最大读入行数。指定最大读入行数。指定最大读入行数。l l如果通过键盘输入时,不希望出现下标提示,则可以使如果通过键盘输入时,不希望出现下标提示,则可以使如果通过键盘输入时,不希望出现下标提示,则可以使如果通过键盘输入时,不希望出现下标提示,则可以使用用用用quiet=TRUEquiet=TRUE。l lencoding=“”encoding=“”指定编码格式,有时候读入中文可能出现指

8、定编码格式,有时候读入中文可能出现指定编码格式,有时候读入中文可能出现指定编码格式,有时候读入中文可能出现乱码,可通过此参数指定:乱码,可通过此参数指定:乱码,可通过此参数指定:乱码,可通过此参数指定:Latin-1Latin-1或或或或UTF-8UTF-8注意事项:注意事项:注意事项:注意事项:用于读入纯字符或数字,没有表头。用于读入纯字符或数字,没有表头。用于读入纯字符或数字,没有表头。用于读入纯字符或数字,没有表头。如果输入单一类型的向量,例均为字符,用如果输入单一类型的向量,例均为字符,用如果输入单一类型的向量,例均为字符,用如果输入单一类型的向量,例均为字符,用scanscan函数效

9、函数效函数效函数效率更高。率更高。率更高。率更高。默认情况下用默认情况下用默认情况下用默认情况下用scanscan函数读入的数据生成向量类型。函数读入的数据生成向量类型。函数读入的数据生成向量类型。函数读入的数据生成向量类型。举例:键盘输入举例:键盘输入举例:键盘输入举例:键盘输入命令行在每行行命令行在每行行命令行在每行行命令行在每行行首提示的数字是首提示的数字是首提示的数字是首提示的数字是下一个输入项的下一个输入项的下一个输入项的下一个输入项的索引。索引。索引。索引。键入一个空行表键入一个空行表键入一个空行表键入一个空行表示结束输入示结束输入示结束输入示结束输入 举例:读取文件举例:读取文件

10、举例:读取文件举例:读取文件uu(2 2)使用)使用)使用)使用readline()readline()函数:读取从键盘中输入的单行数函数:读取从键盘中输入的单行数函数:读取从键盘中输入的单行数函数:读取从键盘中输入的单行数据。据。据。据。函数功能描述:函数功能描述:函数功能描述:函数功能描述:readsalinefromtheterminalreadsalinefromtheterminal使用说明:一般调用使用说明:一般调用使用说明:一般调用使用说明:一般调用readlinereadline时可以指定一个提示语字符时可以指定一个提示语字符时可以指定一个提示语字符时可以指定一个提示语字符串作

11、为参数,为用户提示要输入的内容。这个参数是可串作为参数,为用户提示要输入的内容。这个参数是可串作为参数,为用户提示要输入的内容。这个参数是可串作为参数,为用户提示要输入的内容。这个参数是可选的。选的。选的。选的。readline()readline()与与与与readLines()readLines()是两个不同的函数是两个不同的函数是两个不同的函数是两个不同的函数。举例举例举例举例思考:从输出结果的角度,scan和readline的区别?uu(3 3)使用)使用)使用)使用print()print() 在交互模式的顶层,只需要简单键入变量名或者表达在交互模式的顶层,只需要简单键入变量名或者表

12、达在交互模式的顶层,只需要简单键入变量名或者表达在交互模式的顶层,只需要简单键入变量名或者表达式,就能输出变量或表达式的值。式,就能输出变量或表达式的值。式,就能输出变量或表达式的值。式,就能输出变量或表达式的值。print()print()函数:在非交互模式下,例如在函数体内部打函数:在非交互模式下,例如在函数体内部打函数:在非交互模式下,例如在函数体内部打函数:在非交互模式下,例如在函数体内部打印变量或表达式的值,上述方法就行不通。此时印变量或表达式的值,上述方法就行不通。此时印变量或表达式的值,上述方法就行不通。此时印变量或表达式的值,上述方法就行不通。此时printprint() ()

13、函数就派上用场了。函数就派上用场了。函数就派上用场了。函数就派上用场了。print()print()函数可带一个参数函数可带一个参数函数可带一个参数函数可带一个参数digits=digits=参数指定每个数输出参数指定每个数输出参数指定每个数输出参数指定每个数输出的有效数字位数,的有效数字位数,的有效数字位数,的有效数字位数,print.gap=print.gap=参数,用来指定矩阵或参数,用来指定矩阵或参数,用来指定矩阵或参数,用来指定矩阵或数组输出时列之间的间距。数组输出时列之间的间距。数组输出时列之间的间距。数组输出时列之间的间距。uu(4 4)使用)使用)使用)使用cat()cat()

14、函数。函数。函数。函数。cat()cat()函数:比函数:比函数:比函数:比print()print()函数稍微好用一点,因为后者只可函数稍微好用一点,因为后者只可函数稍微好用一点,因为后者只可函数稍微好用一点,因为后者只可输出一个表达式,而且输出内容自带编号,这可能会造输出一个表达式,而且输出内容自带编号,这可能会造输出一个表达式,而且输出内容自带编号,这可能会造输出一个表达式,而且输出内容自带编号,这可能会造成干扰。成干扰。成干扰。成干扰。cat()cat()函数定义形式:函数定义形式:函数定义形式:函数定义形式:使用说明:使用说明:使用说明:使用说明:l lcat()cat()函数可把多

15、个参数连接起来在输出,具有函数可把多个参数连接起来在输出,具有函数可把多个参数连接起来在输出,具有函数可把多个参数连接起来在输出,具有paste()paste()功功功功能。能。能。能。l l使用使用使用使用cat()cat()函数时需要一个行结束字符函数时需要一个行结束字符函数时需要一个行结束字符函数时需要一个行结束字符“ “nn” ”,如果没有,如果没有,如果没有,如果没有,输入提示符输入提示符输入提示符输入提示符“ “ ” ” 不会换行。不会换行。不会换行。不会换行。l l默认情况下打印各个参数以空格分开。即默认情况下打印各个参数以空格分开。即默认情况下打印各个参数以空格分开。即默认情况

16、下打印各个参数以空格分开。即sep=“”sep=“”的设置。的设置。的设置。的设置。还可以设置各种字符,如还可以设置各种字符,如还可以设置各种字符,如还可以设置各种字符,如“n”“n”,来分隔各个输出参数,来分隔各个输出参数,来分隔各个输出参数,来分隔各个输出参数,或不设如何分隔:或不设如何分隔:或不设如何分隔:或不设如何分隔:sep=“”sep=“”。此外也可以把。此外也可以把。此外也可以把。此外也可以把sepsep设置为字设置为字设置为字设置为字符串向量。符串向量。符串向量。符串向量。u举例举例 2 2 2 2、读写文件、读写文件、读写文件、读写文件一般把文本文件定义为由一般把文本文件定义

17、为由一般把文本文件定义为由一般把文本文件定义为由ASCIIASCII字符或其他人类语言的编码字符或其他人类语言的编码字符或其他人类语言的编码字符或其他人类语言的编码(如中文的(如中文的(如中文的(如中文的GBGB编码)构成的文件。其中用换行符表示文本编码)构成的文件。其中用换行符表示文本编码)构成的文件。其中用换行符表示文本编码)构成的文件。其中用换行符表示文本内部的行间隔。内部的行间隔。内部的行间隔。内部的行间隔。R R提供了多个读写文件的函数,包括提供了多个读写文件的函数,包括提供了多个读写文件的函数,包括提供了多个读写文件的函数,包括readLines()readLines()、read

18、.tableread.table() ()、read.fwf()read.fwf()、write.table()write.table()、writeLines()writeLines()等。等。等。等。uu(1 1)使用)使用)使用)使用read.table()read.table()函数:将文本文件函数:将文本文件函数:将文本文件函数:将文本文件( (如表格类的数据如表格类的数据如表格类的数据如表格类的数据) )读入读入读入读入R R,生成数据框对象。,生成数据框对象。,生成数据框对象。,生成数据框对象。函数功能描述:函数功能描述:函数功能描述:函数功能描述:readsafileintab

19、leformatandcreatesadatareadsafileintableformatandcreatesadataframefromit,withcasescorrespondingtolinesandvariablesframefromit,withcasescorrespondingtolinesandvariablestofieldsinthefile.tofieldsinthefile.函函函函数数数数定定定定义义义义形形形形式式式式:参数说明参数说明参数说明参数说明(1)(1):l lfilefile:指定读入的文件或文件路径。:指定读入的文件或文件路径。:指定读入的文件或文

20、件路径。:指定读入的文件或文件路径。l lheaderheader:是否读入列名,默认是不读入。:是否读入列名,默认是不读入。:是否读入列名,默认是不读入。:是否读入列名,默认是不读入。l lsepsep:用来指定分隔符,读入的数据要求有规则的分隔符,:用来指定分隔符,读入的数据要求有规则的分隔符,:用来指定分隔符,读入的数据要求有规则的分隔符,:用来指定分隔符,读入的数据要求有规则的分隔符,如空格、如空格、如空格、如空格、TABTAB、换行符、回车符等。、换行符、回车符等。、换行符、回车符等。、换行符、回车符等。l las.isas.is:读入的字符是否转换成因子,默认所有读入的字:读入的字

21、符是否转换成因子,默认所有读入的字:读入的字符是否转换成因子,默认所有读入的字:读入的字符是否转换成因子,默认所有读入的字符都转换成因子。符都转换成因子。符都转换成因子。符都转换成因子。l lcalClassescalClasses:指定类的数据类型的格式。:指定类的数据类型的格式。:指定类的数据类型的格式。:指定类的数据类型的格式。l lstringAsFactors=stringAsFactors=是否字符转换成因子,默认是是否字符转换成因子,默认是是否字符转换成因子,默认是是否字符转换成因子,默认是TRUETRUE参数说明参数说明参数说明参数说明(2)(2):l lrow.names=c

22、()row.names=c()指定各行的名称指定各行的名称指定各行的名称指定各行的名称l lcol.names=c()col.names=c()指定列的名称,如果读入的文件没有表头,指定列的名称,如果读入的文件没有表头,指定列的名称,如果读入的文件没有表头,指定列的名称,如果读入的文件没有表头,可以指定。可以指定。可以指定。可以指定。l lskip=Nskip=N从文件的第几行开始读入数据。从文件的第几行开始读入数据。从文件的第几行开始读入数据。从文件的第几行开始读入数据。l lNrows=NNrows=N读入的行数。读入的行数。读入的行数。读入的行数。l lna.string=c()na.s

23、tring=c()指定什么样的字符表示缺失值。指定什么样的字符表示缺失值。指定什么样的字符表示缺失值。指定什么样的字符表示缺失值。l lcomment.char=comment.char=指定评论的开始字符。默认是指定评论的开始字符。默认是指定评论的开始字符。默认是指定评论的开始字符。默认是# #。l ldec=dec=指定小数点数指定小数点数指定小数点数指定小数点数l lencoding=encoding=指定编码规则。指定编码规则。指定编码规则。指定编码规则。参数说明参数说明参数说明参数说明(3)(3):R R中还有一系列基于中还有一系列基于中还有一系列基于中还有一系列基于read.tab

24、leread.table函数的不同函数的不同函数的不同函数的不同选项的函数选项的函数选项的函数选项的函数函数函数headersepquotedecfillComment.charread.tableFALSE”或或.!blank.lines.skip#read.csvTRUE,”.TRUEread.csv2TRUE;”,TRUEread.delimTRUEt”.TRUEread.delim2TRUEt”,TRUEu举例举例uu(2 2)使用)使用)使用)使用read.fwf()read.fwf() read.fwf()read.fwf()函数适用于读入数据没有相应的分隔符,函数适用于读入数据没

25、有相应的分隔符,函数适用于读入数据没有相应的分隔符,函数适用于读入数据没有相应的分隔符,但读入的数据字段长度是固定的。但读入的数据字段长度是固定的。但读入的数据字段长度是固定的。但读入的数据字段长度是固定的。数据读入数据读入数据读入数据读入R R后,生成数据框对象。后,生成数据框对象。后,生成数据框对象。后,生成数据框对象。函数功能描述:函数功能描述:函数功能描述:函数功能描述:readatableoffixedwidthreadatableoffixedwidthformatteddataintoadata.frameformatteddataintoadata.frame定义形式:定义形式

26、:定义形式:定义形式:参数说明参数说明参数说明参数说明(1)(1):l lfilefile:指定读入的文件或文件路径。:指定读入的文件或文件路径。:指定读入的文件或文件路径。:指定读入的文件或文件路径。l lheaderheader:是否读入列名,默认是不读入。:是否读入列名,默认是不读入。:是否读入列名,默认是不读入。:是否读入列名,默认是不读入。l lsepsep:用于在头部分隔变量名的符号。:用于在头部分隔变量名的符号。:用于在头部分隔变量名的符号。:用于在头部分隔变量名的符号。l lskip=Nskip=N:表示文件头部要跳过的函数。:表示文件头部要跳过的函数。:表示文件头部要跳过的函

27、数。:表示文件头部要跳过的函数。l lrow.names=c()row.names=c():设置数据框中行名称。:设置数据框中行名称。:设置数据框中行名称。:设置数据框中行名称。l lcow.names=c()cow.names=c():设置数据框中列名称。:设置数据框中列名称。:设置数据框中列名称。:设置数据框中列名称。l lnn设置读入设置读入设置读入设置读入R R的行数。的行数。的行数。的行数。l lbuffersizebuffersize:设置一次读入的函数的最大值:设置一次读入的函数的最大值:设置一次读入的函数的最大值:设置一次读入的函数的最大值u举例举例uu(3 3)使用)使用)使

28、用)使用readLines()readLines() readLines()readLines()交互式地数据输入。交互式地数据输入。交互式地数据输入。交互式地数据输入。可以控制读入的数据行数,非批处理。适用于需要逐可以控制读入的数据行数,非批处理。适用于需要逐可以控制读入的数据行数,非批处理。适用于需要逐可以控制读入的数据行数,非批处理。适用于需要逐行处理的大文件。其中行处理的大文件。其中行处理的大文件。其中行处理的大文件。其中read.table()read.table()和和和和scan()scan()都是把文都是把文都是把文都是把文件一次性读入内存,当文件非常大时,读一个文件要件一次性

29、读入内存,当文件非常大时,读一个文件要件一次性读入内存,当文件非常大时,读一个文件要件一次性读入内存,当文件非常大时,读一个文件要耗费太长时间,这对内存要求也比较高。耗费太长时间,这对内存要求也比较高。耗费太长时间,这对内存要求也比较高。耗费太长时间,这对内存要求也比较高。返回是一个字符串向量,其中每个值对应文件中的一返回是一个字符串向量,其中每个值对应文件中的一返回是一个字符串向量,其中每个值对应文件中的一返回是一个字符串向量,其中每个值对应文件中的一行。行。行。行。函数功能描述:函数功能描述:函数功能描述:函数功能描述:readsomeoralltextlinesfromareadsome

30、oralltextlinesfromaconnectionconnection函数定义形式:函数定义形式:函数定义形式:函数定义形式:参数说明:参数说明:参数说明:参数说明:l lconcon:字符串或包含要读取的文件的路径。:字符串或包含要读取的文件的路径。:字符串或包含要读取的文件的路径。:字符串或包含要读取的文件的路径。l ln n:整数值,设置要读取的行数。:整数值,设置要读取的行数。:整数值,设置要读取的行数。:整数值,设置要读取的行数。l lokok:逻辑值,设置当文件的函数小于:逻辑值,设置当文件的函数小于:逻辑值,设置当文件的函数小于:逻辑值,设置当文件的函数小于n n时是否要

31、报错。时是否要报错。时是否要报错。时是否要报错。l lWarnWarn:逻辑值,设置当文件没有以:逻辑值,设置当文件没有以:逻辑值,设置当文件没有以:逻辑值,设置当文件没有以EOLEOL结束时是否报错结束时是否报错结束时是否报错结束时是否报错l lEncodingEncoding:字符,设置输入文件的编码方式:字符,设置输入文件的编码方式:字符,设置输入文件的编码方式:字符,设置输入文件的编码方式u举例举例连接连接连接连接(connection)(connection)的介绍:的介绍:的介绍:的介绍:l l“ “连接连接连接连接”(connection)”(connection)是是是是R R

32、中用于多种中用于多种中用于多种中用于多种I/OI/O(输入输出)操(输入输出)操(输入输出)操(输入输出)操作的一个基本的机制,在这里用于读取文件。作的一个基本的机制,在这里用于读取文件。作的一个基本的机制,在这里用于读取文件。作的一个基本的机制,在这里用于读取文件。l l连接一般通过调用函数连接一般通过调用函数连接一般通过调用函数连接一般通过调用函数file()file()、url()url()或其他或其他或其他或其他R R函数创建。函数创建。函数创建。函数创建。应用:打开连接,把结果赋值给变量应用:打开连接,把结果赋值给变量应用:打开连接,把结果赋值给变量应用:打开连接,把结果赋值给变量c

33、 c,然后设定参数,然后设定参数,然后设定参数,然后设定参数n=1n=1使程序一次只读取文件的一行。当使程序一次只读取文件的一行。当使程序一次只读取文件的一行。当使程序一次只读取文件的一行。当R R遇到文件结束符遇到文件结束符遇到文件结束符遇到文件结束符(EOF)(EOF)时,时,时,时,返回一个空值。文件读入结束,关闭连接。返回一个空值。文件读入结束,关闭连接。返回一个空值。文件读入结束,关闭连接。返回一个空值。文件读入结束,关闭连接。如果需要对每一行的文字进行如果需要对每一行的文字进行如果需要对每一行的文字进行如果需要对每一行的文字进行处理,可以借助于字符串处理处理,可以借助于字符串处理处

34、理,可以借助于字符串处理处理,可以借助于字符串处理函数,如:函数,如:函数,如:函数,如:strsplit()strsplit()、substr()substr() nchar()nchar()、grep()grep()、regexprregexpr() ()、sub()sub()、gsub()gsub()等等等等seak()seak()表示表示表示表示“ “倒带倒带倒带倒带” ”,即从文,即从文,即从文,即从文件开始重新读取。件开始重新读取。件开始重新读取。件开始重新读取。uu(4 4)使用)使用)使用)使用write.table()write.table()RR中还可以将数据对象(通常是数

35、据框或矩阵)导出到文本中还可以将数据对象(通常是数据框或矩阵)导出到文本中还可以将数据对象(通常是数据框或矩阵)导出到文本中还可以将数据对象(通常是数据框或矩阵)导出到文本文件中。文件中。文件中。文件中。write.tablewrite.table的功能描述:的功能描述:的功能描述:的功能描述:printsitsrequiredargumentxprintsitsrequiredargumentx(afterconvertingittoadataframeifitisnotonenora(afterconvertingittoadataframeifitisnotonenoramatrix)t

36、oafileorconnection.matrix)toafileorconnection.定义形式定义形式参数说明:参数说明:参数说明:参数说明:l lx x: 要导出的对象要导出的对象要导出的对象要导出的对象l lfilefile:字符串,用于写入输出的文件名或连接对象:字符串,用于写入输出的文件名或连接对象:字符串,用于写入输出的文件名或连接对象:字符串,用于写入输出的文件名或连接对象l lappendappend:逻辑值,设置是将输出添加到现有文件的结:逻辑值,设置是将输出添加到现有文件的结:逻辑值,设置是将输出添加到现有文件的结:逻辑值,设置是将输出添加到现有文件的结尾尾尾尾(app

37、end=TRUE)(append=TRUE),还是覆盖这个文件,还是覆盖这个文件,还是覆盖这个文件,还是覆盖这个文件(append=(append=FALSE)FALSE) 。l lsepsep:字符,设置一行中分隔值的字符。:字符,设置一行中分隔值的字符。:字符,设置一行中分隔值的字符。:字符,设置一行中分隔值的字符。l lrow.namesrow.names:逻辑值,设置输出中是否包括行名称。:逻辑值,设置输出中是否包括行名称。:逻辑值,设置输出中是否包括行名称。:逻辑值,设置输出中是否包括行名称。l lcow.names=c()cow.names=c():逻辑值,设置输出中是否包括列名称

38、:逻辑值,设置输出中是否包括列名称:逻辑值,设置输出中是否包括列名称:逻辑值,设置输出中是否包括列名称u举例:数据框举例:数据框u举例:矩阵。输出矩阵时,需要声明不要列名和行名举例:矩阵。输出矩阵时,需要声明不要列名和行名uu(4 4)使用)使用)使用)使用cat()cat()注释:注释:注释:注释: 第一次调用第一次调用第一次调用第一次调用cat()cat()时创建文件时创建文件时创建文件时创建文件u.txtu.txt,并把一行内容,并把一行内容,并把一行内容,并把一行内容“ “abcabc” ”写写写写入文件,第二次调用追加写入第二行内容入文件,第二次调用追加写入第二行内容入文件,第二次调

39、用追加写入第二行内容入文件,第二次调用追加写入第二行内容“ “dede” ”。这个文件。这个文件。这个文件。这个文件会在每一次操作之后自动保存。会在每一次操作之后自动保存。会在每一次操作之后自动保存。会在每一次操作之后自动保存。 还可以写入多个字段。还可以写入多个字段。还可以写入多个字段。还可以写入多个字段。uu(5 5)使用)使用)使用)使用writeLines()writeLines()注释:注释:注释:注释: 第一次调用第一次调用第一次调用第一次调用writeLines()writeLines()时创建文件时创建文件时创建文件时创建文件u.txtu.txt,并把一行内容,并把一行内容,并

40、把一行内容,并把一行内容“ “w1w1” ”、“ “w2w2” ”和和和和“ “w3w3” ”写入文件,第二次调用追加写入第写入文件,第二次调用追加写入第写入文件,第二次调用追加写入第写入文件,第二次调用追加写入第二行内容二行内容二行内容二行内容“ “w4w4” ”、“ “w5w5” ”和和和和“ “w6w6” ”。 如果在此文件目录下存在如果在此文件目录下存在如果在此文件目录下存在如果在此文件目录下存在u.txtu.txt,那么在第一次写入时会覆盖,那么在第一次写入时会覆盖,那么在第一次写入时会覆盖,那么在第一次写入时会覆盖文件中原有的内容。文件中原有的内容。文件中原有的内容。文件中原有的内

41、容。3、连接数据库、连接数据库4、从、从Hadoop中获取数据中获取数据二、数据预处理二、数据预处理二、数据预处理二、数据预处理1、数据合并、数据合并2、数据转换、数据转换3、数据分段与子集、数据分段与子集4、数据汇总、数据汇总5、数据修整、数据修整6、数据清洗、数据清洗u为什么要数据预处理?为什么要数据预处理?一个典型的项目中一个典型的项目中80%的精力都花在为分析二进行的发现、清洗的精力都花在为分析二进行的发现、清洗和准备数据上,只有不到和准备数据上,只有不到5%的精力用于分析(剩下的时间都耗的精力用于分析(剩下的时间都耗费在了写报告上)。费在了写报告上)。现实世界中的数据一般是脏的、不完

42、整的和不一致的。数据预处现实世界中的数据一般是脏的、不完整的和不一致的。数据预处理可以改进数据质量,从而有助于提高其后的挖掘过程的精度和理可以改进数据质量,从而有助于提高其后的挖掘过程的精度和性能。性能。数据挖掘中数据预处理主要包括:数据清洗(填写缺失值、光滑数据挖掘中数据预处理主要包括:数据清洗(填写缺失值、光滑噪声数据,识别或删除离群点并解决不一致性)、数据集成(合噪声数据,识别或删除离群点并解决不一致性)、数据集成(合成多个数据源的数据,存放在一个一致的数据文件或数据库中)、成多个数据源的数据,存放在一个一致的数据文件或数据库中)、数据转换(把数据规范化和聚集)和数据规约(维度规约和数值

43、数据转换(把数据规范化和聚集)和数据规约(维度规约和数值规约)规约) 1 1 1 1、数据合并、数据合并、数据合并、数据合并uuR R中提供了多个函数,用于把多个数据结构粘贴成一个数据中提供了多个函数,用于把多个数据结构粘贴成一个数据中提供了多个函数,用于把多个数据结构粘贴成一个数据中提供了多个函数,用于把多个数据结构粘贴成一个数据结构。如结构。如结构。如结构。如paste()paste()、rbind()rbind()、cbind()cbind()和和和和merge()merge()(1 1)paste()paste()函数函数函数函数paste()paste()函数把多个字符型向量连接成一

44、个向量,如果要将函数把多个字符型向量连接成一个向量,如果要将函数把多个字符型向量连接成一个向量,如果要将函数把多个字符型向量连接成一个向量,如果要将两个不同类型的向量连接起来,那么会被强制转换成字符型两个不同类型的向量连接起来,那么会被强制转换成字符型两个不同类型的向量连接起来,那么会被强制转换成字符型两个不同类型的向量连接起来,那么会被强制转换成字符型向量。向量。向量。向量。在默认情况下,向量的值之间用空格分隔的,还可用在默认情况下,向量的值之间用空格分隔的,还可用在默认情况下,向量的值之间用空格分隔的,还可用在默认情况下,向量的值之间用空格分隔的,还可用sepsep参参参参数指定其他类型的

45、分隔符。数指定其他类型的分隔符。数指定其他类型的分隔符。数指定其他类型的分隔符。如果想把向量中的所有值都连接成一个字符串,可用如果想把向量中的所有值都连接成一个字符串,可用如果想把向量中的所有值都连接成一个字符串,可用如果想把向量中的所有值都连接成一个字符串,可用collapsecollapse参数参数参数参数u举例举例 1 1 1 1、数据合并、数据合并、数据合并、数据合并(2 2)cbind()cbind()和和和和rbind()rbind()函数函数函数函数有时候,需要把几个向量、矩阵或数据框合并在一起,那么有时候,需要把几个向量、矩阵或数据框合并在一起,那么有时候,需要把几个向量、矩阵

46、或数据框合并在一起,那么有时候,需要把几个向量、矩阵或数据框合并在一起,那么cbindcbind() ()和和和和rbind()rbind()可以实现此功能。可以实现此功能。可以实现此功能。可以实现此功能。cbind()cbind()函数:通过增加列的形式把几个对象合并在一起。函数:通过增加列的形式把几个对象合并在一起。函数:通过增加列的形式把几个对象合并在一起。函数:通过增加列的形式把几个对象合并在一起。相当于水平地将两张表拼接在一起。相当于水平地将两张表拼接在一起。相当于水平地将两张表拼接在一起。相当于水平地将两张表拼接在一起。rbind()rbind()函数:通过增加行的形式把几个对象合

47、并在一起。函数:通过增加行的形式把几个对象合并在一起。函数:通过增加行的形式把几个对象合并在一起。函数:通过增加行的形式把几个对象合并在一起。相当于垂直地把两张表拼接在一起。相当于垂直地把两张表拼接在一起。相当于垂直地把两张表拼接在一起。相当于垂直地把两张表拼接在一起。使用方法:使用方法:使用方法:使用方法:c/rbind(arg1,arg2,arg3,)c/rbind(arg1,arg2,arg3,),其中,其中,其中,其中arg1arg1、arg2arg2、arg3arg3等参数的长度等参数的长度等参数的长度等参数的长度( (列数和行数列数和行数列数和行数列数和行数) )不相等时,会有循环

48、补齐。不相等时,会有循环补齐。不相等时,会有循环补齐。不相等时,会有循环补齐。u举例举例u举例举例 1 1 1 1、数据合并、数据合并、数据合并、数据合并(3 3)merge()merge()函数函数函数函数merge()merge()函数:通过共同的字段合并数据框。函数:通过共同的字段合并数据框。函数:通过共同的字段合并数据框。函数:通过共同的字段合并数据框。功能描述:功能描述:功能描述:功能描述:MergetwodataframesbycommoncolumnsMergetwodataframesbycommoncolumnsorrownames,ordootherversionsofda

49、tabase_join_orrownames,ordootherversionsofdatabase_join_operations.operations.定义形式:定义形式:定义形式:定义形式:merge(x,y,by=intersect(names(x),merge(x,y,by=intersect(names(x),names(y),by.x=by,by.y=by,all=FALSE,all.x=all,names(y),by.x=by,by.y=by,all=FALSE,all.x=all,all.y=all,sort=TRUE,suffixes=c(.x,.y),all.y=all,

50、sort=TRUE,suffixes=c(.x,.y),incomparables=NULL,.)incomparables=NULL,.)参数说明参数说明参数说明参数说明l lxx用于合并的数据框用于合并的数据框用于合并的数据框用于合并的数据框l lyy用于合并的数据框用于合并的数据框用于合并的数据框用于合并的数据框l lbyby对应于列的字符型向量,默认值对应于列的字符型向量,默认值对应于列的字符型向量,默认值对应于列的字符型向量,默认值intersect(names(x),intersect(names(x),names(y)names(y)l lby.x/yby.x/y对应对应对应对应

51、x/yx/y中列的名称的字符型向量,会覆盖由中列的名称的字符型向量,会覆盖由中列的名称的字符型向量,会覆盖由中列的名称的字符型向量,会覆盖由byby提提提提供的列表供的列表供的列表供的列表l lall.x/yall.x/y逻辑值,指定是否应该包含数据框逻辑值,指定是否应该包含数据框逻辑值,指定是否应该包含数据框逻辑值,指定是否应该包含数据框x/yx/y中的所有行中的所有行中的所有行中的所有行l lsortsort逻辑值,指定是否需要根据列名对结果进行排序,默逻辑值,指定是否需要根据列名对结果进行排序,默逻辑值,指定是否需要根据列名对结果进行排序,默逻辑值,指定是否需要根据列名对结果进行排序,默

52、认值是认值是认值是认值是TRUETRUEu举例举例 2 2 2 2、数据转换、数据转换、数据转换、数据转换uu原始数据中有些变量可能有问题,如变量名称或数据类型不原始数据中有些变量可能有问题,如变量名称或数据类型不原始数据中有些变量可能有问题,如变量名称或数据类型不原始数据中有些变量可能有问题,如变量名称或数据类型不一致等,那么需要进行数据转换。一致等,那么需要进行数据转换。一致等,那么需要进行数据转换。一致等,那么需要进行数据转换。(1 1)变量重新赋值:例如在)变量重新赋值:例如在)变量重新赋值:例如在)变量重新赋值:例如在“ “使用使用使用使用rbind()rbind()和和和和cbin

53、d()cbind()函数之函数之函数之函数之数据框数据框数据框数据框” ”中,使用中,使用中,使用中,使用names()names()函数对数据框组件的名称重新赋函数对数据框组件的名称重新赋函数对数据框组件的名称重新赋函数对数据框组件的名称重新赋值。值。值。值。(2 2)转换函数:常用的更改数据框变量的函数是)转换函数:常用的更改数据框变量的函数是)转换函数:常用的更改数据框变量的函数是)转换函数:常用的更改数据框变量的函数是transformtransform,该函数的定义如下:,该函数的定义如下:,该函数的定义如下:,该函数的定义如下:transform(_data,)transform(

54、_data,)l l此函数没有具名实参,在调用此函数时,首先要指定一个数据框,此函数没有具名实参,在调用此函数时,首先要指定一个数据框,此函数没有具名实参,在调用此函数时,首先要指定一个数据框,此函数没有具名实参,在调用此函数时,首先要指定一个数据框,跟着是一列的表达式,表达式中的变量是数据框中的变量,此函数跟着是一列的表达式,表达式中的变量是数据框中的变量,此函数跟着是一列的表达式,表达式中的变量是数据框中的变量,此函数跟着是一列的表达式,表达式中的变量是数据框中的变量,此函数会完成表达式中的计算,并返回一个新的数据框。会完成表达式中的计算,并返回一个新的数据框。会完成表达式中的计算,并返回

55、一个新的数据框。会完成表达式中的计算,并返回一个新的数据框。u举例举例 2 2 2 2、数据转换、数据转换、数据转换、数据转换(3 3)对对象中的每个元素进行函数运算:在转换数据过程)对对象中的每个元素进行函数运算:在转换数据过程)对对象中的每个元素进行函数运算:在转换数据过程)对对象中的每个元素进行函数运算:在转换数据过程中,经常会对一系列(或一个复合对象的所有元素)运行一中,经常会对一系列(或一个复合对象的所有元素)运行一中,经常会对一系列(或一个复合对象的所有元素)运行一中,经常会对一系列(或一个复合对象的所有元素)运行一个相同的函数,并返回一系列的对象(或一个新的复合对象)个相同的函数

56、,并返回一系列的对象(或一个新的复合对象)个相同的函数,并返回一系列的对象(或一个新的复合对象)个相同的函数,并返回一系列的对象(或一个新的复合对象),R R的基本库中提供了一系列的函数可完成此项功能。的基本库中提供了一系列的函数可完成此项功能。的基本库中提供了一系列的函数可完成此项功能。的基本库中提供了一系列的函数可完成此项功能。l la a、在数组上运行一个函数、在数组上运行一个函数、在数组上运行一个函数、在数组上运行一个函数 applyapply函数可以对一个数组函数可以对一个数组函数可以对一个数组函数可以对一个数组( (或矩阵或矩阵或矩阵或矩阵) )的每一个部分运行同一的每一个部分运行

57、同一的每一个部分运行同一的每一个部分运行同一个函数:个函数:个函数:个函数:apply(X,MARGIN,FUN,)apply(X,MARGIN,FUN,) X X是要计算的数值,是要计算的数值,是要计算的数值,是要计算的数值,FUNFUN是函数名称,是函数名称,是函数名称,是函数名称,MARGINMARGIN用来指定函用来指定函用来指定函用来指定函数将要在哪个维度上运行。数将要在哪个维度上运行。数将要在哪个维度上运行。数将要在哪个维度上运行。u举例举例u举例举例 2 2 2 2、数据转换、数据转换、数据转换、数据转换l lb b、对列表或向量的元素进行函数运算、对列表或向量的元素进行函数运算

58、、对列表或向量的元素进行函数运算、对列表或向量的元素进行函数运算 lapplylapply函数允许在函数允许在函数允许在函数允许在列表或数据框列表或数据框列表或数据框列表或数据框上的每一个元素运行某个上的每一个元素运行某个上的每一个元素运行某个上的每一个元素运行某个函数,并函数,并函数,并函数,并返回一个列表返回一个列表返回一个列表返回一个列表,lapplylapply函数有两个参数:对象函数有两个参数:对象函数有两个参数:对象函数有两个参数:对象X X和和和和函数函数函数函数FUNFUN。 如果想返回的结果不是列表,而是向量、矩阵或数组(视如果想返回的结果不是列表,而是向量、矩阵或数组(视如

59、果想返回的结果不是列表,而是向量、矩阵或数组(视如果想返回的结果不是列表,而是向量、矩阵或数组(视具体情况),那么具体情况),那么具体情况),那么具体情况),那么sapplysapply函数可以完成此功能。此函数的函数可以完成此功能。此函数的函数可以完成此功能。此函数的函数可以完成此功能。此函数的使用方法与使用方法与使用方法与使用方法与lapplylapply一致。一致。一致。一致。 还有一个还有一个还有一个还有一个“ “多元多元多元多元” ”版本的版本的版本的版本的sapplysapply函数:函数:函数:函数:mapply()mapply() mapply()mapply()定义形式如下:

60、定义形式如下:定义形式如下:定义形式如下:mapply(FUN,MoreArgs=,SIMPLIFY=,USE.NAMES=)mapply(FUN,MoreArgs=,SIMPLIFY=,USE.NAMES=) 函数参数说明如下:函数参数说明如下:函数参数说明如下:函数参数说明如下:参数参数描述描述默认值默认值FUN要运行的函数要运行的函数FUN运行在其上的一系列向量对象运行在其上的一系列向量对象MoreArgs其他传递给其他传递给FUN的参数的参数SIMPLIFY逻辑值,用于表示是否简化返回结果逻辑值,用于表示是否简化返回结果TRUEUSE.NAMES逻辑值,用于表示返回值是否使用名字,名字

61、来自第一个向量逻辑值,用于表示返回值是否使用名字,名字来自第一个向量TRUEu举例举例u举例举例 3 3 3 3、数据分段和子集、数据分段和子集、数据分段和子集、数据分段和子集(1 1)cut()cut()函数可将一个连续性变量切割成很多小片段,用函数可将一个连续性变量切割成很多小片段,用函数可将一个连续性变量切割成很多小片段,用函数可将一个连续性变量切割成很多小片段,用于处理数值向量或于处理数值向量或于处理数值向量或于处理数值向量或R R中的中的中的中的DateDate对象。输入时一个数值向量,对象。输入时一个数值向量,对象。输入时一个数值向量,对象。输入时一个数值向量,输出是一个因子,因子

62、的每个水平对应输入向量的每个区间输出是一个因子,因子的每个水平对应输入向量的每个区间输出是一个因子,因子的每个水平对应输入向量的每个区间输出是一个因子,因子的每个水平对应输入向量的每个区间范围。范围。范围。范围。 数值形式:数值形式:数值形式:数值形式:cut(x,breaks,labels=NULL,include.lowest=cut(x,breaks,labels=NULL,include.lowest=FALSE,right=TRUE,dig.lab=3,ordered_result=FALSE,FALSE,right=TRUE,dig.lab=3,ordered_result=FAL

63、SE,) ) 日期形式:日期形式:日期形式:日期形式:cut(x,breaks,labels=NULL,start.on.mondaycut(x,breaks,labels=NULL,start.on.monday=TRUE,right=FALSE,)=TRUE,right=FALSE,) 函数参数说明如下:函数参数说明如下:函数参数说明如下:函数参数说明如下:参数参数描述描述默认值默认值x数值向量数值向量breaks指定分隔点数量的整数,或指定分隔点位置的向量指定分隔点数量的整数,或指定分隔点位置的向量labels输出因子的水平的标签输出因子的水平的标签NULLInclude.lowest逻

64、辑值,表示区别左右两边的临界点是否包含在区间内逻辑值,表示区别左右两边的临界点是否包含在区间内FALSEright逻辑值,表明区间是否应该是左开右闭的逻辑值,表明区间是否应该是左开右闭的TRUEdig.lab当产生标签是,标签的有效位数当产生标签是,标签的有效位数3Ordered_resultes逻辑值,表明返回值是否被转换成有序因子逻辑值,表明返回值是否被转换成有序因子FALSEu举例举例(2 2)子集)子集)子集)子集 a a、中括号索引的方式,使用逻辑表达式筛选满足条件的元、中括号索引的方式,使用逻辑表达式筛选满足条件的元、中括号索引的方式,使用逻辑表达式筛选满足条件的元、中括号索引的方

65、式,使用逻辑表达式筛选满足条件的元素对象。适用对象:向量、数组、矩阵、数据框。素对象。适用对象:向量、数组、矩阵、数据框。素对象。适用对象:向量、数组、矩阵、数据框。素对象。适用对象:向量、数组、矩阵、数据框。 b b、使用、使用、使用、使用subset()subset()函数,可对矩阵、数据框的行函数,可对矩阵、数据框的行函数,可对矩阵、数据框的行函数,可对矩阵、数据框的行/ /列进行筛选。列进行筛选。列进行筛选。列进行筛选。定义形式如下:定义形式如下:定义形式如下:定义形式如下:subset(x,subset,select,drop=FALSE,)subset(x,subset,selec

66、t,drop=FALSE,)。 参数说明:参数说明:参数说明:参数说明:x x,筛选对象;,筛选对象;,筛选对象;,筛选对象;subsetsubset,哪些行被返回的逻辑表,哪些行被返回的逻辑表,哪些行被返回的逻辑表,哪些行被返回的逻辑表达式;达式;达式;达式;selectselect,哪些列被返回。,哪些列被返回。,哪些列被返回。,哪些列被返回。 3 3 3 3、数据分段和子集、数据分段和子集、数据分段和子集、数据分段和子集(2 2)子集)子集)子集)子集 c c、抽取部分随机数据也是产生子集的一种方法。最简单的、抽取部分随机数据也是产生子集的一种方法。最简单的、抽取部分随机数据也是产生子集

67、的一种方法。最简单的、抽取部分随机数据也是产生子集的一种方法。最简单的随机抽样的使用随机抽样的使用随机抽样的使用随机抽样的使用sample()sample()函数,此函数的定义形式如下:函数,此函数的定义形式如下:函数,此函数的定义形式如下:函数,此函数的定义形式如下:sample(x,size,replace=FALSE,prob=NULL)sample(x,size,replace=FALSE,prob=NULL) 参数说明:参数说明:参数说明:参数说明:x x,目标对象;,目标对象;,目标对象;,目标对象;sizesize,抽样数量的参数;,抽样数量的参数;,抽样数量的参数;,抽样数量的

68、参数;replacereplace,是否返回抽样,是否返回抽样,是否返回抽样,是否返回抽样( (默认值是默认值是默认值是默认值是FALSE)FALSE);probprob,抽样的概率向量。,抽样的概率向量。,抽样的概率向量。,抽样的概率向量。 使用说明:当对数据框做使用说明:当对数据框做使用说明:当对数据框做使用说明:当对数据框做samplesample操作时,实际返回的是列操作时,实际返回的是列操作时,实际返回的是列操作时,实际返回的是列的随机抽样结果,而不是行(因为数据框是向量的列表,的随机抽样结果,而不是行(因为数据框是向量的列表,的随机抽样结果,而不是行(因为数据框是向量的列表,的随机

69、抽样结果,而不是行(因为数据框是向量的列表,samplesample实际抽样的是这个列表的元素)。实际抽样的是这个列表的元素)。实际抽样的是这个列表的元素)。实际抽样的是这个列表的元素)。 使用说明:对应行抽样,需要使用使用说明:对应行抽样,需要使用使用说明:对应行抽样,需要使用使用说明:对应行抽样,需要使用samplesample函数创建一组行函数创建一组行函数创建一组行函数创建一组行号的抽样结果,然后再利用索引选取这些行号所对应的行号的抽样结果,然后再利用索引选取这些行号所对应的行号的抽样结果,然后再利用索引选取这些行号所对应的行号的抽样结果,然后再利用索引选取这些行号所对应的行 举例举例

70、举例举例 4 4 4 4、数据汇总、数据汇总、数据汇总、数据汇总uu R R提供了各种用于汇总数据、聚合记录构建小型数据集的提供了各种用于汇总数据、聚合记录构建小型数据集的提供了各种用于汇总数据、聚合记录构建小型数据集的提供了各种用于汇总数据、聚合记录构建小型数据集的函数。例如:函数。例如:函数。例如:函数。例如:tapply()tapply()、by()by()、aggregate()aggregate()、rowsum()rowsum()和和和和计数函数计数函数计数函数计数函数tabulate()tabulate()和和和和table()table()函数。函数。函数。函数。(1 1)ta

71、pply()tapply()函数用于函数用于函数用于函数用于向量向量向量向量的汇总分析,是一个非常灵活的汇总分析,是一个非常灵活的汇总分析,是一个非常灵活的汇总分析,是一个非常灵活的函数,可设置对向量的函数,可设置对向量的函数,可设置对向量的函数,可设置对向量X X的某个子集做汇总,也可指定汇的某个子集做汇总,也可指定汇的某个子集做汇总,也可指定汇的某个子集做汇总,也可指定汇总函数。总函数。总函数。总函数。 定义如下:定义如下:定义如下:定义如下:tapply(X,INDEX,FUN,simplify)tapply(X,INDEX,FUN,simplify)(2 2)by()by()函数:与函

72、数:与函数:与函数:与tapplytapply差不多,区别在于差不多,区别在于差不多,区别在于差不多,区别在于byby应用于应用于应用于应用于数据数据数据数据框框框框,INDICESINDICES代替了代替了代替了代替了tapplytapply中的中的中的中的INDEXINDEX参数。参数。参数。参数。 函数参数说明如下:函数参数说明如下:函数参数说明如下:函数参数说明如下:参数参数描述描述默认值默认值X在此对象上应用函数在此对象上应用函数(通常是向量通常是向量)INDEX列表因子,设置列表因子,设置X中的值是如何分组交给中的值是如何分组交给FUN去计算的,与去计算的,与X等长等长FUN应用到

73、应用到X中元素的函数中元素的函数NULL.传递给传递给FUN的可选参数的可选参数simplify若为若为TRUE,且,且FUN返回标量,那么返回标量,那么tapply就返回一个与标量模式一就返回一个与标量模式一致的数组。若为致的数组。若为FALSE,tapply函数就返回列表函数就返回列表TRUEu举例举例 4 4 4 4、数据汇总、数据汇总、数据汇总、数据汇总(3 3)aggregate()aggregate()函数:应用于数据框的数据汇总函数。函数:应用于数据框的数据汇总函数。函数:应用于数据框的数据汇总函数。函数:应用于数据框的数据汇总函数。 定义形式如下:定义形式如下:定义形式如下:定

74、义形式如下:aggregate(x,by,FUN,)aggregate(x,by,FUN,) 此函数也用于时间序列,参数略有不同:此函数也用于时间序列,参数略有不同:此函数也用于时间序列,参数略有不同:此函数也用于时间序列,参数略有不同:aggregate(x,nfrequency=1,FUN=sum,ndeltat=1,aggregate(x,nfrequency=1,FUN=sum,ndeltat=1,ts.eps=getOption(“ts.eps”),)ts.eps=getOption(“ts.eps”),) 参数说明:参数说明:参数说明:参数说明:x,x,要聚合的对象;要聚合的对象;

75、要聚合的对象;要聚合的对象;by,by,分组元素列表,长度与分组元素列表,长度与分组元素列表,长度与分组元素列表,长度与x x一样;一样;一样;一样;FUN,FUN,标量函数,用于计算总统计量,对数据框没有标量函数,用于计算总统计量,对数据框没有标量函数,用于计算总统计量,对数据框没有标量函数,用于计算总统计量,对数据框没有默认值,对时间序列默认值为默认值,对时间序列默认值为默认值,对时间序列默认值为默认值,对时间序列默认值为sumsum;nfrequencynfrequency,单位时,单位时,单位时,单位时间内的观察次数;间内的观察次数;间内的观察次数;间内的观察次数;其他传递给其他传递给

76、其他传递给其他传递给FUNFUN的参数。的参数。的参数。的参数。u举例举例 4 4 4 4、数据汇总、数据汇总、数据汇总、数据汇总(4 4)rowsum()rowsum()函数:应用于数据框的数据汇总函数,根函数:应用于数据框的数据汇总函数,根函数:应用于数据框的数据汇总函数,根函数:应用于数据框的数据汇总函数,根据分组变量计算对象中某个变量的总和。据分组变量计算对象中某个变量的总和。据分组变量计算对象中某个变量的总和。据分组变量计算对象中某个变量的总和。 定义形式如下:定义形式如下:定义形式如下:定义形式如下:rowsum(x,group,reorder=TRUE,)rowsum(x,gro

77、up,reorder=TRUE,) 参数说明:参数说明:参数说明:参数说明:x,x,要聚合的对象要聚合的对象要聚合的对象要聚合的对象, ,包括向量、矩阵和数据框;包括向量、矩阵和数据框;包括向量、矩阵和数据框;包括向量、矩阵和数据框;group,group,分组元素列表或向量,长度与分组元素列表或向量,长度与分组元素列表或向量,长度与分组元素列表或向量,长度与x x一样;一样;一样;一样;reorder,reorder,若为若为若为若为TRUETRUE,输出结果会依照,输出结果会依照,输出结果会依照,输出结果会依照sort(unique(group)sort(unique(group)的结果进

78、行的结果进行的结果进行的结果进行排序,若为排序,若为排序,若为排序,若为FALSEFALSE,则根据给出的,则根据给出的,则根据给出的,则根据给出的groupgroup排序。排序。排序。排序。na.rmna.rm,逻辑值,判断是否放弃逻辑值,判断是否放弃逻辑值,判断是否放弃逻辑值,判断是否放弃NANA值。值。值。值。u举例举例 4 4 4 4、数据汇总、数据汇总、数据汇总、数据汇总(5 5)计数:)计数:)计数:)计数:tabulate()tabulate()和和和和table()table() a a、tabulate()tabulate()计算向量、矩阵、因子计算向量、矩阵、因子计算向量、

79、矩阵、因子计算向量、矩阵、因子( (不能是数据框不能是数据框不能是数据框不能是数据框) )中没中没中没中没干过值的个数,返回的结果就是包含这些计数的向量,定干过值的个数,返回的结果就是包含这些计数的向量,定干过值的个数,返回的结果就是包含这些计数的向量,定干过值的个数,返回的结果就是包含这些计数的向量,定义形式:义形式:义形式:义形式:tabulate(bin,nbins=max(1,bin,na.rm=tabulate(bin,nbins=max(1,bin,na.rm=TRUE)TRUE),bin:anumericvector(ofpositiveintegers),bin:anumeri

80、cvector(ofpositiveintegers),orafactor.orafactor. b b、table()table()处理数据中的一些分类值。定义形式如下:处理数据中的一些分类值。定义形式如下:处理数据中的一些分类值。定义形式如下:处理数据中的一些分类值。定义形式如下:table(,exclude=if(useNA=“no”)c(NA,NA),useNA=c(table(,exclude=if(useNA=“no”)c(NA,NA),useNA=c(“no”,“ifany”,“alway”),dnn=list.names(),“no”,“ifany”,“alway”),dnn=

81、list.names(),deparse.level=1)deparse.level=1)。 函数参数说明如下:函数参数说明如下:函数参数说明如下:函数参数说明如下:参数参数描述描述默认值默认值因子集合因子集合(或可转换成因子对象的集合或可转换成因子对象的集合)exclude要删除的因子水平要删除的因子水平if(useNA=“no”)c(NA,NA)useNA设置是否使用表中的设置是否使用表中的NA值值c(“no”,“ifany”,“alway”)dnn用于设置结果维度名称用于设置结果维度名称list.names()deparse.level见帮助文件见帮助文件1u举例举例 5 5 5 5、数

82、据修整、数据修整、数据修整、数据修整uu 数据修整:为了便于计算、存储数据,有时候需要改变数数据修整:为了便于计算、存储数据,有时候需要改变数数据修整:为了便于计算、存储数据,有时候需要改变数数据修整:为了便于计算、存储数据,有时候需要改变数据的组织形式或更换统计量对数据重新统计计算。例如很据的组织形式或更换统计量对数据重新统计计算。例如很据的组织形式或更换统计量对数据重新统计计算。例如很据的组织形式或更换统计量对数据重新统计计算。例如很多列但很稀疏的数据框,尽管可以直接拿来分析,但在保多列但很稀疏的数据框,尽管可以直接拿来分析,但在保多列但很稀疏的数据框,尽管可以直接拿来分析,但在保多列但很

83、稀疏的数据框,尽管可以直接拿来分析,但在保存时就会比较麻烦。存时就会比较麻烦。存时就会比较麻烦。存时就会比较麻烦。R R中提供了多种数据修整的函数。中提供了多种数据修整的函数。中提供了多种数据修整的函数。中提供了多种数据修整的函数。(1 1)向量、矩阵和数据框的转置函数)向量、矩阵和数据框的转置函数)向量、矩阵和数据框的转置函数)向量、矩阵和数据框的转置函数t()t()(2 2)窄数据和宽数据格式转换函数:)窄数据和宽数据格式转换函数:)窄数据和宽数据格式转换函数:)窄数据和宽数据格式转换函数:unstack()unstack()、stack()stack()(3 3)数据框形状修改函数)数据

84、框形状修改函数)数据框形状修改函数)数据框形状修改函数reshape()reshape() 5 5 5 5、数据修整、数据修整、数据修整、数据修整(2 2)窄数据和宽数据格式转换函数:)窄数据和宽数据格式转换函数:)窄数据和宽数据格式转换函数:)窄数据和宽数据格式转换函数:unstack()unstack()、stack()stack() stack(x)stack(x),x x是数据框,可以将宽格式的数据形式转换成长是数据框,可以将宽格式的数据形式转换成长是数据框,可以将宽格式的数据形式转换成长是数据框,可以将宽格式的数据形式转换成长格式的数据形式。格式的数据形式。格式的数据形式。格式的数据

85、形式。 unstack(x,unstack(x,变量变量变量变量11变量变量变量变量2)2),与,与,与,与stackstack的作用恰恰相反,把的作用恰恰相反,把的作用恰恰相反,把的作用恰恰相反,把长格式的数据形式转换成宽格式的数据形式。但要注意第长格式的数据形式转换成宽格式的数据形式。但要注意第长格式的数据形式转换成宽格式的数据形式。但要注意第长格式的数据形式转换成宽格式的数据形式。但要注意第二个参数的公式类型:变量二个参数的公式类型:变量二个参数的公式类型:变量二个参数的公式类型:变量2 2会被当成因子类型,它的每个会被当成因子类型,它的每个会被当成因子类型,它的每个会被当成因子类型,它

86、的每个水平都会形成一列,变量水平都会形成一列,变量水平都会形成一列,变量水平都会形成一列,变量1 1是相应的输出变量值。是相应的输出变量值。是相应的输出变量值。是相应的输出变量值。u举例举例 5 5 5 5、数据修整、数据修整、数据修整、数据修整(2 2)reshapereshape函数:此函数比较复杂,它有两个功能,一函数:此函数比较复杂,它有两个功能,一函数:此函数比较复杂,它有两个功能,一函数:此函数比较复杂,它有两个功能,一个功能是把长数据转换成宽数据,另一个是把宽数据转换个功能是把长数据转换成宽数据,另一个是把宽数据转换个功能是把长数据转换成宽数据,另一个是把宽数据转换个功能是把长数

87、据转换成宽数据,另一个是把宽数据转换成长数据。定义形式:成长数据。定义形式:成长数据。定义形式:成长数据。定义形式: 使用说明使用说明使用说明使用说明 (1 1)、)、)、)、diresctiondiresction参数用来设置所需的数据框是参数用来设置所需的数据框是参数用来设置所需的数据框是参数用来设置所需的数据框是“ “长的长的长的长的” ”还是还是还是还是“ “宽的宽的宽的宽的” ”。 (2 2)若将数据转换为宽数据时,需要设置)若将数据转换为宽数据时,需要设置)若将数据转换为宽数据时,需要设置)若将数据转换为宽数据时,需要设置idvaridvar和和和和timevartimevar参数

88、,将数据转换成长数据时,要设置参数,将数据转换成长数据时,要设置参数,将数据转换成长数据时,要设置参数,将数据转换成长数据时,要设置varyingvarying参数。参数。参数。参数。 (3 3)reshapereshape是可逆的,如果一个对象是可逆的,如果一个对象是可逆的,如果一个对象是可逆的,如果一个对象d d通过调用通过调用通过调用通过调用reshapereshape创建的,还可以再次调用创建的,还可以再次调用创建的,还可以再次调用创建的,还可以再次调用reshapereshape将其转换成原将其转换成原将其转换成原将其转换成原来的数据框。来的数据框。来的数据框。来的数据框。 (4 4

89、)还有功能更强大的)还有功能更强大的)还有功能更强大的)还有功能更强大的reshapereshape库和库和库和库和plyrplyr包。包。包。包。 函数参数说明如下:函数参数说明如下:函数参数说明如下:函数参数说明如下:参数参数描述描述默认值默认值data需要修整的数据框需要修整的数据框varying通常是变量名称列表。宽格式数据中的变量列表,它们需要分配到通常是变量名称列表。宽格式数据中的变量列表,它们需要分配到长格式中行长格式中行NULLv.names长格式中的变量名称将赋给宽格式的列长格式中的变量名称将赋给宽格式的列NULLtimevar长格式中用于识别同一组或同一个个体的观察的变量长

90、格式中用于识别同一组或同一个个体的观察的变量“time”idvar长格式中用于识别分组或个体的变量长格式中用于识别分组或个体的变量“id”ids用于新的用于新的idvar1:NROW(data)times用于新的用于新的timevardirection设置数据转换方向设置数据转换方向,“wide”表示从长数据到宽数据,表示从长数据到宽数据,“long”相反相反 6 6 6 6、数据清洗、数据清洗、数据清洗、数据清洗uu 数据清洗的目的是发现数据收集、处理和存储过程中的问数据清洗的目的是发现数据收集、处理和存储过程中的问数据清洗的目的是发现数据收集、处理和存储过程中的问数据清洗的目的是发现数据收

91、集、处理和存储过程中的问题,并对数据进行修正,避免这些问题影响后续的分析。题,并对数据进行修正,避免这些问题影响后续的分析。题,并对数据进行修正,避免这些问题影响后续的分析。题,并对数据进行修正,避免这些问题影响后续的分析。数据清洗并不改变数据的含义。数据清洗并不改变数据的含义。数据清洗并不改变数据的含义。数据清洗并不改变数据的含义。(1 1)查找和删除重复的数据:可使用)查找和删除重复的数据:可使用)查找和删除重复的数据:可使用)查找和删除重复的数据:可使用duplicated()duplicated()函数查函数查函数查函数查找数据中重复值,返回一个逻辑向量,指出重复元素。同找数据中重复值

92、,返回一个逻辑向量,指出重复元素。同找数据中重复值,返回一个逻辑向量,指出重复元素。同找数据中重复值,返回一个逻辑向量,指出重复元素。同时可根据结果删除重复的数据,此外还可用时可根据结果删除重复的数据,此外还可用时可根据结果删除重复的数据,此外还可用时可根据结果删除重复的数据,此外还可用unique()unique()函数函数函数函数删除重复的值。删除重复的值。删除重复的值。删除重复的值。u举例举例? 6 6 6 6、数据清洗、数据清洗、数据清洗、数据清洗(2 2)排序:排序函数)排序:排序函数)排序:排序函数)排序:排序函数sort()sort()和和和和order()order()a a、

93、用、用、用、用sortsort函数对对象函数对对象函数对对象函数对对象( (向量、矩阵向量、矩阵向量、矩阵向量、矩阵) )中的元素进行排序,如中的元素进行排序,如中的元素进行排序,如中的元素进行排序,如果加上参数果加上参数果加上参数果加上参数decreasing=TRUEdecreasing=TRUE选项后可用反向排序。还可选项后可用反向排序。还可选项后可用反向排序。还可选项后可用反向排序。还可以用以用以用以用na.lastna.last控制如何处理控制如何处理控制如何处理控制如何处理NANA值,值,值,值,na.last=TRUEna.last=TRUE,会把,会把,会把,会把NANA值放在

94、最后,值放在最后,值放在最后,值放在最后,na.last=FALSEna.last=FALSE,会把,会把,会把,会把NANA值放在最前。值放在最前。值放在最前。值放在最前。u举例举例 6 6 6 6、数据清洗、数据清洗、数据清洗、数据清洗(2 2)排序:排序函数)排序:排序函数)排序:排序函数)排序:排序函数sort()sort()和和和和order()order()b b、数据框排序:对数据框进行排序首先要枚举数据框中的、数据框排序:对数据框进行排序首先要枚举数据框中的、数据框排序:对数据框进行排序首先要枚举数据框中的、数据框排序:对数据框进行排序首先要枚举数据框中的索引,然后据此依序取数

95、据框中的行。可以用索引,然后据此依序取数据框中的行。可以用索引,然后据此依序取数据框中的行。可以用索引,然后据此依序取数据框中的行。可以用order()order()函数函数函数函数生成索引的排序,生成索引的排序,生成索引的排序,生成索引的排序,order()order()的定义形式如下:的定义形式如下:的定义形式如下:的定义形式如下:order(,na.last=,decreasing=)order(,na.last=,decreasing=)order()order()函数的参数是一组向量。该函数会对每个向量做排函数的参数是一组向量。该函数会对每个向量做排函数的参数是一组向量。该函数会对每

96、个向量做排函数的参数是一组向量。该函数会对每个向量做排序,根据向量在列表中的先后顺序处理相等的值。最后会序,根据向量在列表中的先后顺序处理相等的值。最后会序,根据向量在列表中的先后顺序处理相等的值。最后会序,根据向量在列表中的先后顺序处理相等的值。最后会返回向量排序后的位置。返回向量排序后的位置。返回向量排序后的位置。返回向量排序后的位置。u举例举例三、字符串操作三、字符串操作三、字符串操作三、字符串操作1、字符串长度、字符串长度2、子串、子串3、字符串连接与拆分、字符串连接与拆分4、正则表达式、正则表达式 1 1 1 1、字符串长度、字符串长度、字符串长度、字符串长度uu尽管尽管尽管尽管R

97、R是一门以数值向量和矩阵为核心的统计语言,当字是一门以数值向量和矩阵为核心的统计语言,当字是一门以数值向量和矩阵为核心的统计语言,当字是一门以数值向量和矩阵为核心的统计语言,当字符串同样极为重要。符串同样极为重要。符串同样极为重要。符串同样极为重要。字符串长度函数字符串长度函数字符串长度函数字符串长度函数nchar(x)nchar(x):x x是字符串变量,该函数返回字是字符串变量,该函数返回字是字符串变量,该函数返回字是字符串变量,该函数返回字符串符串符串符串x x的长度。的长度。的长度。的长度。 注释:如果注释:如果注释:如果注释:如果x x不是字符串变量,不是字符串变量,不是字符串变量,

98、不是字符串变量,ncharnchar会得到不可预期的结会得到不可预期的结会得到不可预期的结会得到不可预期的结果。果。果。果。 2 2 2 2、子串、子串、子串、子串(1 1)grep(pattern,x)grep(pattern,x):此函数是在字符串:此函数是在字符串:此函数是在字符串:此函数是在字符串x x中搜索给定子中搜索给定子中搜索给定子中搜索给定子字符串字符串字符串字符串patternpattern。如果。如果。如果。如果x x有有有有n n个元素,即包含个元素,即包含个元素,即包含个元素,即包含n n个字符串,则个字符串,则个字符串,则个字符串,则grep(pattern,x)gr

99、ep(pattern,x)会返回一个长度不超过会返回一个长度不超过会返回一个长度不超过会返回一个长度不超过n n的向量,这个向的向量,这个向的向量,这个向的向量,这个向量的每个元素是量的每个元素是量的每个元素是量的每个元素是x x的索引,表示在索引对应的元素的索引,表示在索引对应的元素的索引,表示在索引对应的元素的索引,表示在索引对应的元素xixi中有中有中有中有与与与与patternpattern匹配的子字符串。匹配的子字符串。匹配的子字符串。匹配的子字符串。(2 2)substr(x,start,stop)substr(x,start,stop)返回给定字符串返回给定字符串返回给定字符串返

100、回给定字符串x x中指定位置范中指定位置范中指定位置范中指定位置范围围围围start:stopstart:stop上的子字符串。上的子字符串。上的子字符串。上的子字符串。(3 3)regexpr(pattern,text)regexpr(pattern,text):在字符串:在字符串:在字符串:在字符串texttext中寻找中寻找中寻找中寻找patternpattern,返回与,返回与,返回与,返回与patternpattern匹配的第一个子字符串的起始字符位置。匹配的第一个子字符串的起始字符位置。匹配的第一个子字符串的起始字符位置。匹配的第一个子字符串的起始字符位置。(4 4)gregexp

101、r(patterngregexpr(pattern,text)text)函数的功能与函数的功能与函数的功能与函数的功能与regexpr()regexpr()一一一一样,不过它会寻找与样,不过它会寻找与样,不过它会寻找与样,不过它会寻找与patternpattern匹配的全部子字符串的起始位匹配的全部子字符串的起始位匹配的全部子字符串的起始位匹配的全部子字符串的起始位置。置。置。置。u举例举例 3 3 3 3、字符串连接与拆分、字符串连接与拆分、字符串连接与拆分、字符串连接与拆分(1 1)paste()paste()将若干个字符串拼接在一起,返回一个长的将若干个字符串拼接在一起,返回一个长的将若

102、干个字符串拼接在一起,返回一个长的将若干个字符串拼接在一起,返回一个长的字符串。字符串。字符串。字符串。(2 2)sprint()sprint()按一定格式把若干个组件组合成字符串。按一定格式把若干个组件组合成字符串。按一定格式把若干个组件组合成字符串。按一定格式把若干个组件组合成字符串。 注释函数名注释函数名注释函数名注释函数名sprintfsprintf表示的是字符串打印,即打印到字符串表示的是字符串打印,即打印到字符串表示的是字符串打印,即打印到字符串表示的是字符串打印,即打印到字符串里面,而不是打印到屏幕上。里面,而不是打印到屏幕上。里面,而不是打印到屏幕上。里面,而不是打印到屏幕上。(3 3)strsplit(x,split)strsplit(x,split)根据根据根据根据x x中的字符串中的字符串中的字符串中的字符串splitsplit把字符串把字符串把字符串把字符串x x拆拆拆拆分成若干子字符串。返回这些子字符串组成的分成若干子字符串。返回这些子字符串组成的分成若干子字符串。返回这些子字符串组成的分成若干子字符串。返回这些子字符串组成的R R列表。列表。列表。列表。u举例举例结束语结束语谢谢大家聆听!谢谢大家聆听!92

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号