《R语言数据导入》由会员分享,可在线阅读,更多相关《R语言数据导入(6页珍藏版)》请在金锄头文库上搜索。
1、R语言数据导入来源:DataCamp Blog 编译:亮亮上期我们了解了R语言数据读入的核心函数read.table,现在我们了解一下其他可以用的函数有哪些,以及使用的场景和基本技巧。非关系结构文件读入scan()除了read.table()这类读取文本文档的函数,还可以用scan()函数读入。不同的是它的返回值为列表或者向量。假设我们有下述文本文档241991211993531962下列命令可以读入该数据data-scan(e:/birth.txt)data# 1 24 1991 21 1993 53 1962此外,你代码稍加改造可以将数据变矩阵。matrix(data,nrow=2,byr
2、ow=FALSE)# ,1 ,2 ,3# 1, 24 21 53# 2, 1991 1993 1962scan()也同样支持访问url数据上的数据,现在我们访问网上的一个age数据data - scan(https:/ what = list(Age = 0, Name= , Birthyear= 0), skip=1, sep=, quiet=TRUE)data注意上述代码中的what参数,如果what为list类通过上述代码可以读入类似于spreadsheet类型的文本文档。只需要定义每行中各个项目(列)的类型。scan()其他众多参数的用法和read.table比较类似。固定列宽数据读入
3、read.fwf()有的时候我们可以知道每一列的宽度是多少,下列代码可以让我们读入这类数据data - read.fwf(https:/ widths= c(7,-14,1,-2,1,1,1,1,1,1), col.names=c(subject,sex,s1,s2,s3,s4,s5,s6), strip.white=TRUE) data上述代码中width参数给出了字段的宽度。本例中,前7个字符为课程名字;然后的14个字符我们认为不需要,用-14跳过;接着,性别这一列需要一个宽度的字符;后面的2个空格不需要,用-2跳过;后续的成绩每列需要一个宽度1,1,1,1,1,1传入参数中。这些参数在不
4、同的数据结构下,会有所不同。另外,还可以使用read.fortran()函数读取数据,详细方法可以参见help文档理解。导入excel数据剪切板导入excel表格如果你已经有了个打开的表格,你可以复制其中的内容,然后用readClipboard()或者read.table()函数导入数据。readClipboard() #Only on Windowsread.table(file=clipboard)RODBC包读入excel数据通过RODBC包同样可以导入excel数据表。代码样例如下library(RODBC)connection - odbcConnect()其中,dsn的写法可以参考
5、odbcConnect()函数的帮助文档。此外,odbcConnectExcel()同样可以读入excel数据。 当你读入了Excel数据表后,相当于建立了一个连接,你可以使用sql语句来操作数据 query - data - sqlQuery(connection, query)str(data) 用RODBC包的建立了连接后,在操作完数据要使用odbcCloseAll()其他方法读入excel数据其他可以参考的方法有: * openxlsx包中的read.xlsx函数。 * readxl包中的read_excel函数。其他类型的数据读入其他主流数据类型R可支持的包括有JSON格式,SPSS
6、文件,Stata文件,SAS文件,s-plus文件,EpiInfo文件,matlab文件,Octave文件,FitbitScraper 数据,Quantmod 数据,ARFF 文件。 支持导入的数据库有,MogoDB,MySQL,Oracle,PostgreSQL,SQLite,RJDBC,dBase等。二进制数据读入二进制数据由二进制浮点组成,8个浮点为一个字节。可以使用readBin函数读入此类数据。connection - file(, rb) #You open the connection as reading binary(rb)data - readBin(connection,
7、 what=numeric) #Mode of the vector to be readGIS数据读入地理信息数据在R中也比较常用,常见的rgdal和raster包都有对应的函数处理此类数据。大型数据集的读入如何导入较大的数据一直是R用户的经常讨论的问题,除了将数据导入数据库中处理外,也有一些比较不错的处理大型数据的方法。 data.table包中的fread函数是比较容易实现快速读入大数据的方法,读入大型数据速度相当理想。 library(data.table)data - fread(http:/ sep=auto, nrows = -1, na.strings = c(NA,N/A,)
8、, stringsAsFactors=FALSE ) ff包:该程序包磁盘缓存的技术可以读入超过内存限值大小的数据,常用的函数有read.table.ffdf(),read.csv.ffdf()等。 library(ff)bigdata - read.table.ffdf(file=, nrows=n, fileEncoding=, levels=NULL, FUN=read.table) bigmemory包,此包也常用于处理大型数据。样例代码如下,但是此包不能用于windows系统: library(bigmemory)bigdata - read.big.matrix(filename=
9、, sep=/, header=TRUE, skip=2) sqldf包,此包也可以考虑用于处理大型数据,它还可以使用sql语句处理数据。用read.csv.sql()函数读入数据。 library(sqldf)bigdata - read.csv.sql(file=, sql=select * from file where ., colClasses=c(character, rep(numeric,10) 随后我们别忘了R中的read.table函数,但是,用此函数读入大型数据,需要对参数有较好的控制。简单说,你能设置的参数越多,读入数据的速度越快。总结最后,我们将上述常见的方法做个了总
10、结表格,读者可在用时参考,该表格涵盖了大部分常用数据格式的读入方法。函数来源描述scanr-base顺序读取文件中的数据值read.fwfr-base按行和指定列宽度读取数据read.fortranr-base采用fortran格式设置读取固定格式数据readClipboardr-base读取剪切板中的数据odbcConnectRODBC包读取excel数据,采用odbcgs_readgooglesheet包读取google sheetread.DIFr-base读取DIF文件read_excelreadxl包读取excel文件read.xlsxopenxlsx包读取excel的xlsx文件r
11、ead.odsreadODS包读取open document表格文档fromJSONjsonlite包读取JavaScript的json文件read_spsshaven包读取spss文件read_dtahaven包读取stata文件read.xportforgein包,sasXPORT包读取sas文件read.Sforeign包读取s-splus文件read.epiinfoforeign包读取epi Info文件readMatR.matlab包读取MATLAB文件read.octaveforeign包读取Octave文件read.arffforeign包读取Weka属性关系文件(ARFF)mo
12、ngolite包,Rmongo包,RODBC包,Roracle包,RPostgreSQL包,RSQLite包,RJDBC包各类常见数据库导入数据到RreadBinr-base读入二进制文件hdf5包,h5r包,rhdf5包,RNetCDF包,ncdf包读入hdf文件,NASA和UCAR常用气象数据读取read.dbfforeign包读入DBF文件read.ftabler-base读入无格式列联表Flat contingency tablefreaddata.table包大型文本文档读入read.table.ffdfread.csv.ffdf ff包大型文本文档读入read.big.matrixbigmemory包大型文本文档读入,无法在windows下使用read.csv.sqlsqldf包大型文本文档读入read.tabler-base大型文本文档读入,但是需要合理设计参数,否则速度不理想