您好,欢迎访问三七文档
R-data(2.2.1)刘重杰翻译初稿※由于本人水平有限,时间仓促,错误极多,敬请指出。任何意见和建议请联系:pkuabel@126.comRRRR数据导入和导出数据导入和导出数据导入和导出数据导入和导出版本版本版本版本::::2.2.12.2.12.2.12.2.1((((2005200520052005年年年年12121212月月月月20202020日日日日))))RRRR开发核心小组开发核心小组开发核心小组开发核心小组目录致谢1概述概述概述概述1.1导入1.2导出到文本文件1.3XML2类电子表格格式的数据类电子表格格式的数据类电子表格格式的数据类电子表格格式的数据2.1read.table函数的各种形式2.2固定长度格式文件2.3直接使用scan函数2.4整理数据2.5平面列联表3导入其他统计软件数据导入其他统计软件数据导入其他统计软件数据导入其他统计软件数据3.1EpiInfo,Minitab,S-PLUS,SAS,SPSS,Stata,Systat3.2Octave4关系数据库关系数据库关系数据库关系数据库4.1为何使用数据库4.2关系数据库管理系统概要4.2.1SQL查询4.2.2数据类型4.3R的接口包4.3.1DBI和RMySQL包4.3.2RODBC包5二进制文件二进制文件二进制文件二进制文件5.1二进制数据格式R-data(2.2.1)刘重杰翻译初稿※由于本人水平有限,时间仓促,错误极多,敬请指出。任何意见和建议请联系:pkuabel@126.com5.2dBase文件(DBF)6连接连接连接连接6.1连接的类型6.2连接的输出6.3从连接中输入6.3.1Pushback6.4列出和操作连接6.5二进制连接6.5.1特殊值7网络接口网络接口网络接口网络接口7.1从sockets中读取数据7.2使用download.file函数7.3DCOM接口7.4CORBA接口8读取读取读取读取Excel表格表格表格表格附录A参考文献(缺少索引)致谢手册中关系数据库内容部分基于DouglasBates和SaikatDebRoy的早期手册。本手册的主要作者是BrianRipley。许多志愿者为手册中使用的软件包作出了贡献。这些涉及的软件包的主要作者是:CORBADuncanTempleLangforeignThomasLumley,SaikatDebRoy,DouglasBates,Duncan,MurdochandRogerBivandhdf5MarcusDanielsncdfDavidPiercencvarJuergSchmidliRMySQLDavidJamesandSaikatDebRoyRNetCDFPavelMichnaRODBCMichaelLapsleyandBrianRipleyRSPerlDuncanTempleLangRSPythonDuncanTempleLangSJavaJohnChambersandDuncanTempleLangXMLDuncanTempleLangR-data(2.2.1)刘重杰翻译初稿※由于本人水平有限,时间仓促,错误极多,敬请指出。任何意见和建议请联系:pkuabel@126.comBrianRipley是支持连接(connection)的作者。第一章第一章第一章第一章::::概述概述概述概述统计分析系统读入数据和输入结果报告到其他系统是让人沮丧的任务,会花费比统计分析本身更多的时间,虽然读者会发现统计分析要更加吸引人。本手册描述了通过R本身或者通过可来自CRAN的软件包读写数据的机制。虽然涉及到的软件包有的还在开发中,但是他们提供了有用的功能。除非特别说明,手册中描述的内容适用于任何平台中的R。一般来说,类似R这类统计分析系统对大批量的数据不是特别合适。这个方面其他系统比R更加合适,手册一些地方提到说与其增加R的功能,不如让其他系统进行这项工作。(比如,Therneau和Grambsch(2000)说他们习惯在SAS中操作数据,然后使用S的survival分析。)最近一个软件包允许以Java,perl和python等语言直接整合R代码来开发,利用这些语言提供的功能也许适合些。(从Omegahat工程软件包)R和S类似有Unix可重用的小工具的传统,在导入数据前和输出结果后可以使用awk和perl来处理。在Becker,Chambers和Wilks(1988,Chapter9)的书中有一个例子就是通过Unix的工具来检验和操作输入到S的的数据。R自身使用perl来操作起帮助文件,可以使用read.fwf函数来调用perl脚本,知道停止perl为止。Unix传统的工具目前有很多,包括适用于Windows平台的。1.1导入导入导入导入早期导入到R的数据是简单的文本格式的文件,中小规模的数据通常是可以接受的。导入文本文件的基本函数是scan,随后会有很多更加好用的函数将在第二章中讨论([Spreadsheet-likedata],page5)。然而所有统计顾问都会遇到客户提交的包含权限设置的二进制数据的软盘或者CD,比如说Excel电子表格或者SPSS数据文件。通常,可以导出为文本格式的文件(这样统计顾问就获得了他们电脑上最普通应用数据格式文件的备份。)但是,有时候这是不可能的,第三章([Importingfromotherstatisticalsystems],page11)讨论了通过R直接读取这些文件的机制。读取Excel电子表格的方法在第八章([ReadingExcelspreadsheets],page25)中做了总结。有时候,数据压缩以后成为加速读取的二进制文件。我们有时候把图像数据通过这种方式来处理,在内存中以比特流的形式存在。这种形式的文件读取在第五章和第六章第五节([Binaryfiles],page18andSection6.5[Binaryconnections],page21)中讨论。1.2导出到文本文件导出到文本文件导出到文本文件导出到文本文件从R中导出结果一般来说没什么争议,但是还是有些缺陷。通常,文本格式的文件是最方便的交换媒介。(如果需要二进制文件,参照第五章[Binaryfiles],page18.)R-data(2.2.1)刘重杰翻译初稿※由于本人水平有限,时间仓促,错误极多,敬请指出。任何意见和建议请联系:pkuabel@126.com函数cat成为结果导出函数的基础。cat函数通过一个函数作为参数,附带一些其他参数使得通过正确调用cat函数得到一个文本文件。更好的是,可以多次建立连接,打开一个文件用来写入或添加,然后关闭文件。常见的工作是以矩阵的形式把一个矩阵或者数据框写入到文件中,有时候还带上行和列的名称。这可以通过write.table和write函数来完成。函数write仅写出一个制定列数的矩阵或者向量。write.table函数更加方面,可以写出一个数据框(或者可以转化为数据库形式的对象),并带有行列标记。写出数据框到文本文件还有一些问题需要考虑。1.精度问题通过这些函数,大多数实数或者复数转换为完全的精度,write函数得到的精度依赖于option(digits)的当前设置。为了进一步细致的控制,可以使用format函数来一列一列的操作数据框。2.首行问题R默认首行为变量名称行,于是文件内容常有如下格式:distclimbtimeGreenmantle2.565016.083…………如果write.table函数的col.names参数为NA的话,其他一些系统需要输入变量名称行。Excel中就是这样的情况。3.分隔符在英语国家中当逗号不出现在任何字段中的时候,文件中常见分隔符是逗号。这些文件被称为CSV(commaseparatedvalues)文件,封装好的函数write.csv提供了一些合适的默认选项来读取数据。一些情况中,逗号被用作进制符号(在write.table函数中设置参数dec=,),这时候使用write.csv2默认参数来读取数据,使用分号作为分隔符。使用分号或者tab(sep=\t)设置是最安全的选择。4.缺失值默认情况下,缺失值的输出为NA,但是可以通过参数na的设置来改变。请注意,wrtie.table函数中把NaNs当作NA处理,但是cat和write函数中不是如此。5.引号默认情况下,字符串都有引号(包括行和列的名称)。参数quote决定了字符和因子变量的引号形式。字符串中含有引号的时候需要注意,三种有用的形式如下:df-data.frame(a=I(a\quote))write.table(df)a1a\quotewrite.table(df,qmethod=double)a1aquotewrite.table(df,quote=FALSE,sep=,)a1,aquoteescape的第二种形式在电子表格较常用。R-data(2.2.1)刘重杰翻译初稿※由于本人水平有限,时间仓促,错误极多,敬请指出。任何意见和建议请联系:pkuabel@126.comMASS包中的write.matrix函数提供了写出矩阵格式数据的特别接口,选择块的形式从而节省了内存消耗。可以使用sink函数把标准的R输出写到一个文件,从而获得打印的说明。这不是通常最有效的方式,options(width)设置也许需要增加。foreign包中的write.foreign函数通过使用write.table函数产生一个文本文件,同时也可以给出读取这些文本文件到其他统计软件包需要的代码。现在可以支持数据输出到SPSS和Stata的情况。1.3XML从文本文件中读取数据的时候,用户需要知道如何定制产生文件的一些转换设置,比如说评注字符,是否需要首行(名称),值的分隔符,缺失值的表示等等,这些内容在1.2节([Exporttotextfiles],page3)中做了说明。一种可以不仅用来保存内容,而且可以提供内容结构的标记性语言可以让文件自我说明,一次不需要提供细节就可以被软件读取数据了。XML(可扩展性标记语言)可以提供这种结构,不仅可以提供技术的数据内容,而且可以提供负责的数据结构。XML极其流行并且成为通行标记和交换语言的标准。可以在不同场合下描述地理学的数据,比如地图,图表展示和数学内容等等。XML包提供了读写XML文件通用的工具,在R和S-PLUS中都可以方便的使用这项技术。一些人展现了如何使用XML技术,同时也包括其他内容,去展示不同应用软件之间可以共同使用的数据集,存储R和S-PLUS的对象,使得在两个系统中都可用;通过SVG(ScalableVectorGraphics,XML的同义词)展示作图,表达函数文件;生成包括文本、数据和代码的动态分析报告。XML包的功能超出了本手册的范围,可以在这个网页得到XML包的详细资料和例子。CRAN中的StatDataML包就是基于XML的一个例子。第二章第二章第二章第二章类电子表格数据类电子表格数据类电子表格数据类电子表格数据在1.2章节中([Exporttotextfiles],page3),我们看到电子表格形式的文本文件的几种情况,其中的数据是矩阵形式的,有的还有行和列的名称。本章节将要讨论读取这种格式的数据到R中。2.1read.table函数的几种形式函数的几种形式函数的几种形式函数的几种形式read.table函数是读取矩阵形式数据的最好方法。其他一些函数是调用了read.table函数加上了一些默认参数。需要注意的是,read.table函数读取大数值矩阵是缺乏效率的,参见下面提到的scan函数。下面是一些需要注意的方面:1、编码:如果文件中含有非ASCII编码的字段,必须保证以正确的编码形式读入。这主要出现在UTF-8的情况下读取Latin-1文件格式,可以通过如下方式实现re
本文标题:R数据的导入和导出
链接地址:https://www.777doc.com/doc-6611687 .html