r语言导入csv文件(R语言数据导入二部)

上期我们了解了R语言数据读入的核心函数read.table,现在我们了解一下其他可以用的函数有哪些,以及使用的场景和基本**。非关系结构文件读入scan() 除了read.table()这类读取文本文档的函数...

R语言数据导入——二部

上期我们了解了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,byrow=FALSE)## [,1] [,2] [,3]

scan()也同样支持访问url数据上的数据,现在我们访问网上的一个age数据

data <- scan("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/age.csv", what = list(Age = 0,## $Age

注意上述代码中的what参数,如果what为list类通过上述代码可以读入类似于spreadsheet类型的文本文档。只需要定义每行中各个项目(列)的类型。scan()其他众多参数的用法和read.table比较类似。

固定列宽数据读入read.fwf()

有的时候我们可以知道每一列的宽度是多少,下列代码可以让我们读入这类数据

data <- read.fwf("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/scores.txt", widths= c(7,-14,1,-2,1,1,1,1,1,1),## subject sex s1 s2 s3 s4 s5 s6

上述代码中width参数给出了字段的宽度。本例中,前7个字符为课程名字;然后的14个字符我们认为不需要,用-14跳过;接着,性别这一列需要一个宽度的字符;后面的2个空格不需要,用-2跳过;后续的成绩每列需要一个宽度1,1,1,1,1,1传入参数中。这些参数在不同的数据结构下,会有所不同。

另外,还可以使用read.fortran()函数读取数据,详细方法可以参见help文档理解。

导入excel数据

剪切板导入excel表格

如果你已经有了个打开的表格,你可以复制其中的内容,然后用readClipboard()或者read.table()函数导入数据。

readClipboard() #Only on Windows

RODBC包读入excel数据

通过RODBC包同样可以导入excel数据表。代码样例如下

library(RODBC)

其中,dsn的写法可以参考odbcConnect()函数的帮助文档。此外,odbcConnectExcel()同样可以读入excel数据。

当你读入了Excel数据表后,相当于建立了一个连接,你可以使用sql语句来操作数据

query <- "<SQL Query>"

用RODBC包的建立了连接后,在操作完数据要使用odbcCloseAll()

其他方法读入excel数据

其他可以参考的方法有: * openxlsx包中的read.xlsx函数。 * readxl包中的read_excel函数。

其他类型的数据读入

其他主流数据类型R可支持的包括有JSON格式,SPSS文件,Stata文件,SAS文件,s-plus文件,EpiInfo文件,matlab文件,Octave文件,FitbitScraper 数据,Quantmod 数据,ARFF 文件。 支持导入的数据库有,MogoDB,MySQL,Oracle,PostgreSQL,SQLite,RJDBC,dBase等。

二进制数据读入

二进制数据由二进制浮点组成,8个浮点为一个字节。可以使用readBin函数读入此类数据。

connection <- file("<path to your file>", "rb") #You open the connection as "reading binary"(rb)GIS数据读入

地理信息数据在R中也比较常用,常见的rgdal和raster包都有对应的函数处理此类数据。

大型数据集的读入

如何导入较大的数据一直是R用户的经常讨论的问题,除了将数据导入数据库中处理外,也有一些比较不错的处理大型数据的方法。

data.table包中的fread函数是比较容易实现快速读入大数据的方法,读入大型数据速度相当**。

library(data.table)

ff包:该程序包磁盘缓存的技术可以读入超过内存限值大小的数据,常用的函数有read.table.ffdf(),read.csv.ffdf()等。

library(ff)

bigmemory包,此包也常用于处理大型数据。样例代码如下,但是此包不能用于windows系统:

library(bigmemory)

sqldf包,此包也可以考虑用于处理大型数据,它还可以使用sql语句处理数据。用read.csv.sql()函数读入数据。

library(sqldf)

随后我们别忘了R中的read.table函数,但是,用此函数读入大型数据,需要对参数有**的控制。简单说,你能设置的参数越多,读入数据的速度越快。

总结

最后,我们将上述常见的方法做个了总结表格,读者可在用时参考,该表格涵盖了大部分常用数据格式的读入方法。

函数来源描述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文件read.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)…mongolite包,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.ffdf read.csv.ffdf …ff包大型文本文档读入read.big.matrixbigmemory包大型文本文档读入,无法在windows下使用read.csv.sqlsqldf包大型文本文档读入read.tabler-base大型文本文档读入,但是需要合理设计参数,否则速度不**

来源:DataCamp 编译:亮亮

  • 发表于 2022-11-26 13:40:54
  • 阅读 ( 948 )
  • 分类:科技

0 条评论

请先 登录 后评论
马先生
马先生

307 篇文章

你可能感兴趣的文章

相关问题