您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > R软件及编程应用第四讲报告
R软件及编程应用中南财经政法大学信息与安全工程学院刘树栋第四讲:数据读写、预处理及字符串操作一、数据读写二、数据预处理三、字符串操作一、数据读写1、连接键盘与显示器2、读写文件3、连接数据库4、从Hadoop中获取数据1、连接键盘与显示器R语言中提供了多种多样的输入(I)/输出(O)功能。R提供了多个命令来连接键盘和显示器,包括scan()、readline()、print()和cat()。(1)使用scan()函数:使用scan()函数可从文件中读取或从键盘输入一个向量,可以是数值型或字符型向量,甚至可读取数据来形成一个列表。函数功能描述:readdataintoavectororlistfromtheconsoleorfile函数定义形式:参数说明(1):file从文件中读取数据时,引号中输入文件路径。从键盘中输入时,此参数为空。what默认情况下声明读入为字符型数据。还可设置读入数据的精度/类型,例如what=integer(0),what=numeric(0),what=character(0)。如果读入数据有字符和数值,可用what=“”来声明,则会把读入的数值隐式的转换成字符。sep指定各个读入数据之间的分隔符,默认情况下为空白字符,包括空格、回车、换行符/tab和水平制表符。参数说明(2):还可通过list指定读入变量的变量名,同时生成的对象为列表,此时可以同时读入字符和数值。skip从第几行开始读入数据。nlines指定最大读入行数。如果通过键盘输入时,不希望出现下标提示,则可以使用quiet=TRUE。encoding=“”指定编码格式,有时候读入中文可能出现乱码,可通过此参数指定:Latin-1或UTF-8注意事项:用于读入纯字符或数字,没有表头。如果输入单一类型的向量,例均为字符,用scan函数效率更高。默认情况下用scan函数读入的数据生成向量类型。举例:键盘输入命令行在每行行首提示的数字是下一个输入项的索引。键入一个空行表示结束输入举例:读取文件(2)使用readline()函数:读取从键盘中输入的单行数据。函数功能描述:readsalinefromtheterminal使用说明:一般调用readline时可以指定一个提示语字符串作为参数,为用户提示要输入的内容。这个参数是可选的。readline()与readLines()是两个不同的函数。举例思考:从输出结果的角度,scan和readline的区别?(3)使用print()在交互模式的顶层,只需要简单键入变量名或者表达式,就能输出变量或表达式的值。print()函数:在非交互模式下,例如在函数体内部打印变量或表达式的值,上述方法就行不通。此时print()函数就派上用场了。print()函数可带一个参数digits=参数指定每个数输出的有效数字位数,print.gap=参数,用来指定矩阵或数组输出时列之间的间距。(4)使用cat()函数。cat()函数:比print()函数稍微好用一点,因为后者只可输出一个表达式,而且输出内容自带编号,这可能会造成干扰。cat()函数定义形式:使用说明:cat()函数可把多个参数连接起来在输出,具有paste()功能。使用cat()函数时需要一个行结束字符“\n”,如果没有,输入提示符“”不会换行。默认情况下打印各个参数以空格分开。即sep=“”的设置。还可以设置各种字符,如“\n”,来分隔各个输出参数,或不设如何分隔:sep=“”。此外也可以把sep设置为字符串向量。举例2、读写文件一般把文本文件定义为由ASCII字符或其他人类语言的编码(如中文的GB编码)构成的文件。其中用换行符表示文本内部的行间隔。R提供了多个读写文件的函数,包括readLines()、read.table()、read.fwf()、write.table()、writeLines()等。(1)使用read.table()函数:将文本文件(如表格类的数据)读入R,生成数据框对象。函数功能描述:readsafileintableformatandcreatesadataframefromit,withcasescorrespondingtolinesandvariablestofieldsinthefile.函数定义形式:参数说明(1):file:指定读入的文件或文件路径。header:是否读入列名,默认是不读入。sep:用来指定分隔符,读入的数据要求有规则的分隔符,如空格、TAB、换行符、回车符等。as.is:读入的字符是否转换成因子,默认所有读入的字符都转换成因子。calClasses:指定类的数据类型的格式。stringAsFactors=是否字符转换成因子,默认是TRUE参数说明(2):row.names=c()指定各行的名称col.names=c()指定列的名称,如果读入的文件没有表头,可以指定。skip=N从文件的第几行开始读入数据。Nrows=N读入的行数。na.string=c()指定什么样的字符表示缺失值。comment.char=指定评论的开始字符。默认是#。dec=指定小数点数encoding=指定编码规则。参数说明(3):R中还有一系列基于read.table函数的不同选项的函数函数headersepquotedecfillComment.charread.tableFALSE\”或\’.!blank.lines.skip#read.csvTRUE,\”.TRUEread.csv2TRUE;\”,TRUEread.delimTRUE\t\”.TRUEread.delim2TRUE\t\”,TRUE举例(2)使用read.fwf()read.fwf()函数适用于读入数据没有相应的分隔符,但读入的数据字段长度是固定的。数据读入R后,生成数据框对象。函数功能描述:readatableoffixedwidthformatteddataintoa'data.frame‘定义形式:参数说明(1):file:指定读入的文件或文件路径。header:是否读入列名,默认是不读入。sep:用于在头部分隔变量名的符号。skip=N:表示文件头部要跳过的函数。row.names=c():设置数据框中行名称。cow.names=c():设置数据框中列名称。n设置读入R的行数。buffersize:设置一次读入的函数的最大值举例(3)使用readLines()readLines()交互式地数据输入。可以控制读入的数据行数,非批处理。适用于需要逐行处理的大文件。其中read.table()和scan()都是把文件一次性读入内存,当文件非常大时,读一个文件要耗费太长时间,这对内存要求也比较高。返回是一个字符串向量,其中每个值对应文件中的一行。函数功能描述:readsomeoralltextlinesfromaconnection函数定义形式:参数说明:con:字符串或包含要读取的文件的路径。n:整数值,设置要读取的行数。ok:逻辑值,设置当文件的函数小于n时是否要报错。Warn:逻辑值,设置当文件没有以EOL结束时是否报错Encoding:字符,设置输入文件的编码方式举例连接(connection)的介绍:“连接”(connection)是R中用于多种I/O(输入输出)操作的一个基本的机制,在这里用于读取文件。连接一般通过调用函数file()、url()或其他R函数创建。应用:打开连接,把结果赋值给变量c,然后设定参数n=1使程序一次只读取文件的一行。当R遇到文件结束符(EOF)时,返回一个空值。文件读入结束,关闭连接。如果需要对每一行的文字进行处理,可以借助于字符串处理函数,如:strsplit()、substr()nchar()、grep()、regexpr()、sub()、gsub()等seak()表示“倒带”,即从文件开始重新读取。(4)使用write.table()R中还可以将数据对象(通常是数据框或矩阵)导出到文本文件中。write.table的功能描述:printsitsrequiredargument'x'(afterconvertingittoadataframeifitisnotonenoramatrix)toafileorconnection.定义形式参数说明:x:要导出的对象file:字符串,用于写入输出的文件名或连接对象append:逻辑值,设置是将输出添加到现有文件的结尾(append=TRUE),还是覆盖这个文件(append=FALSE)。sep:字符,设置一行中分隔值的字符。row.names:逻辑值,设置输出中是否包括行名称。cow.names=c():逻辑值,设置输出中是否包括列名称举例:数据框举例:矩阵。输出矩阵时,需要声明不要列名和行名(4)使用cat()注释:•第一次调用cat()时创建文件u.txt,并把一行内容“abc”写入文件,第二次调用追加写入第二行内容“de”。这个文件会在每一次操作之后自动保存。•还可以写入多个字段。(5)使用writeLines()注释:•第一次调用writeLines()时创建文件u.txt,并把一行内容“w1”、“w2”和“w3”写入文件,第二次调用追加写入第二行内容“w4”、“w5”和“w6”。•如果在此文件目录下存在u.txt,那么在第一次写入时会覆盖文件中原有的内容。3、连接数据库4、从Hadoop中获取数据二、数据预处理1、数据合并2、数据转换3、数据分段与子集4、数据汇总5、数据修整6、数据清洗为什么要数据预处理?一个典型的项目中80%的精力都花在为分析二进行的发现、清洗和准备数据上,只有不到5%的精力用于分析(剩下的时间都耗费在了写报告上)。现实世界中的数据一般是脏的、不完整的和不一致的。数据预处理可以改进数据质量,从而有助于提高其后的挖掘过程的精度和性能。数据挖掘中数据预处理主要包括:数据清洗(填写缺失值、光滑噪声数据,识别或删除离群点并解决不一致性)、数据集成(合成多个数据源的数据,存放在一个一致的数据文件或数据库中)、数据转换(把数据规范化和聚集)和数据规约(维度规约和数值规约)1、数据合并R中提供了多个函数,用于把多个数据结构粘贴成一个数据结构。如paste()、rbind()、cbind()和merge()(1)paste()函数paste()函数把多个字符型向量连接成一个向量,如果要将两个不同类型的向量连接起来,那么会被强制转换成字符型向量。在默认情况下,向量的值之间用空格分隔的,还可用sep参数指定其他类型的分隔符。如果想把向量中的所有值都连接成一个字符串,可用collapse参数举例1、数据合并(2)cbind()和rbind()函数有时候,需要把几个向量、矩阵或数据框合并在一起,那么cbind()和rbind()可以实现此功能。cbind()函数:通过增加列的形式把几个对象合并在一起。相当于水平地将两张表拼接在一起。rbind()函数:通过增加行的形式把几个对象合并在一起。相当于垂直地把两张表拼接在一起。使用方法:c/rbind(arg1,arg2,arg3,…),其中arg1、arg2、arg3等参数的长度(列数和行数)不相等时,会有循环补齐。举例举例1、数据合并(3)merge()函数merge()函数:通过共同的字段合并数据框。功能描述:Mergetwodataframesbycommoncolumnsorrownames,ordootherversionsofdatabase_join_operations.定义形式:merge(x,y,by=intersect(names(x),names(y)),by.x=by,by.y
本文标题:R软件及编程应用第四讲报告
链接地址:https://www.777doc.com/doc-3871104 .html