R语言数据导入
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• bigmemory 包,此包也常用于处理大型数据。样例代码如下,但是此包不能 用于 windows 系统:
library(bigmemory) bigdata <- read.big.matrix(filename="<File name>",
sep="/", header=TRUE, skip=2)
假设我们有下述文本文档
21 49
9 1
21 19
9 3
51 39
6 2
下列命令可以读入该数据
data<-scan("e:/birth.txt") data
## [1] 24 1991 21 1993 53 1962
此外,你代码稍加改造可以将数据变矩阵。
matrix(data,nrow=2,byrow=FALSE)
二进制数据读入
二进制数据由二进制浮点组成,8 个浮点为一个字节。可以使用 readBin 函数读入 此类数据。
connection <- file("<path to your file>", "rb") #You open the connection as "reading binary"(rb) data <- readBin(connection,
what="numeric") #Mode of the vector to be read
GIS 数据读入
地理信息数据在 R 中也比较常用,常见的 rgdal 和 raster 包都有对应的函数处理此 类数据。
大型数据集的读入
如何导入较大的数据一直是 R 用户的经常讨论的问题,除了将数据导入数据库中 处理外,也有一些比较不错的处理大型数据的方法。
另外,还可以使用 read.fortran()函数读取数据,详细方法可以参见 help 文档理 解。
导入 excel 数据
剪切板导入 excel 表格
如果你已经有了个打开的表格,你可以复制其中的内容,然后用 readClipboard() 或者 read.table()函数导入数据。 readClipboard() #Only on Windows read.table(file="clipboard")`
,
n c d f 包
rf 读
eo入
ar D deB . iF dg文 bn件 f包
rr读
e- 入
ab无
da格
.f s 式
t a
e
列
b
联
l
表
e
F
l
a
t
c
o
n
t
i
n
g
e
n
c
y
t
a b l e
f d大
r a型
et 文
aa本
d .t 文
a b
档
l读
e入
包
r e a d .t a b l e .f f d f
• data.table 包中的 fread 函数是比较容易实现快速读入大数据的方法,读入大 型数据速度相当理想。
library(data.table) data <- fread("http://assets.datacamp.com/blog_assets/chol.txt",
sep=auto, nrows = -1, na.strings = c("NA","N/A",""), stringsAsFactors=FALSE )
,
R P o s t g r e S Q L 包
,
R S Q L i t e 包
,
R J D B C 包
rr读
e- 入
ab二
da进
B i n
s e
制 文
件
…h 读 d入 fh 5d 包f ,文
h件 5, rN 包A ,S rA h和 dU fC 5A 包R ,常
R用 N气
e象 t数 C据 D读 F取 包
##
[,1] [,2] [,3]
## [1,] 24 21 53
## [2,] 1991 1993 1962
scan()也同样支持访问 url 数据上的数据,现在我们访问网上的一个 age 数据
data <- scan("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/
• sqldf 包,此包也可以考虑用于处理大型数据,它还可以使用 sql 语句处理数 据。用 read.csv.sql()函数读入数据。
library(sqldf) bigdata <- read.csv.sql(file="<Path to your file>",
sql="select * from file where ...", colClasses=c("character",
bB 包文
件
rf 读
eo取
ar O dec
. it oga
c nv
t 包e
a
文
v
件
e
rf 读
eo取
ar W dee
. ik aga r n属
f 包性
f
关
系
文
件
(
A R F F )
… m各
o类
n常
g见
o数
li 据
t e
库
包导
,入
R数
m据
o到
nR
来自百度文库
g
o
包
,
R O D B C 包
,
R o r a c l e 包
R 语言数据导入
来源:DataCamp Blog 编译:亮亮 上期我们了解了 R 语言数据读入的核心函数 read.table,现在我们了解一下其他可 以用的函数有哪些,以及使用的场景和基本技巧。
非关系结构文件读入 scan()
除了 read.table()这类读取文本文档的函数,还可以用 scan()函数读入。不同的是 它的返回值为列表或者向量。
函来描 数源述
sr顺 c- 序 ab读 na 取
s文 e件
中
的
数
据
值
rr按
e- 行
ab和
da指
.f s 定
we f
列
宽
度
读
取
数
据
rr采
e- 用
abf
dao .f s r
oet
r
r
t
a
r
n
a
格
n式
设 置 读 取 固 定 格 式 数 据
rr读
e- 取
ab剪
da切
Cs 板
li p
e
中
b
的
o
数
a
据
r
d
o R读
• 当你读入了 Excel 数据表后,相当于建立了一个连接,你可以使用 sql 语句来操 作数据
query <- "<SQL Query>" data <- sqlQuery(connection,
query) str(data)
用 RODBC 包的建立了连接后,在操作完数据要使用 odbcCloseAll()
det
_ na
d 包t
t
a
a文
件
rf 读 eo取 ar s dga . es xi 文 pn件 o包 r, ts
a s X P O R T
包
rf 读 eo取 ar s de. is Sgp
nl 包u
s 文
件
rf 读 eo取 ar e dep . ii egI pnn ii 包 f
no
f
文
o件
r R读 e. 取 a mM daA Mt T al L t aA
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 传入参数中。这些参数在不同的数据结构下,会有所不同。
r e a d . c s v .f f d f
…大
型 f文 f本 包文
档 读 入
r b大
ei 型
ag文
d m本
. e文
b i
m o
档
gr 读
. y入
m 包,
a无
t
法
r
在
i
w
x
i
n
d
o
w
s
下
使
用
rs大
eq型
al 文
dd本
. f文
c s
包 档
v
读
.
入
s
q
l
rr大
e- 型
ab文 da本 .t s 文 ae
固定列宽数据读入 read.fwf()
有的时候我们可以知道每一列的宽度是多少,下列代码可以让我们读入这类数据
data <- read.fwf("https://s3.amazonaws.com/assets.datacamp.com/blog_ass ets/scores.txt", widths= c(7,-14,1,-2,1,1,1,1,1,1),
l s x 文
件
rr读 ee取 aao ddp
. Oe o Dn dSd s 包o
c u m e n t 表
格
文
档
fj读 rs取 ooJ mn a J li v St a Oe S N 包c
r i p t 的
j s o n 文
件
r h读
ea取
avs
dep
_ ns
s 包s
p文
s
件
s
r h读 ea取
avs
rep("numeric",10)))
• 随后我们别忘了 R 中的 read.table 函数,但是,用此函数读入大型数据,需要 对参数有较好的控制。简单说,你能设置的参数越多,读入数据的速度越快。
总结
最后,我们将上述常见的方法做个了总结表格,读者可在用时参考,该表格涵盖了 大部分常用数据格式的读入方法。
其他方法读入 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 等。
age.csv",
what = list(Age = 0,
data
Name= "", Birthyear= 0), skip=1, sep=",", quiet=TRUE)
注意上述代码中的 what 参数,如果 what 为 list 类通过上述代码可以读入类似于 spreadsheet 类型的文本文档。只需要定义每行中各个项目(列)的类型。scan() 其他众多参数的用法和 read.table 比较类似。
RODBC 包读入 excel 数据
通过 RODBC 包同样可以导入 excel 数据表。代码样例如下 library(RODBC) connection <- odbcConnect("<DSN>")
其中,dsn 的写法可以参考 odbcConnect()函数的帮助文档。此外, odbcConnectExcel()同样可以读入 excel 数据。
• ff 包:该程序包磁盘缓存的技术可以读入超过内存限值大小的数据,常用的函 数有 read.table.ffdf(),read.csv.ffdf()等。
library(ff) bigdata <- read.table.ffdf(file="<Path to file>",
nrows=n, fileEncoding="", levels=NULL, FUN="read.table")
d O取
b De c Bx
CCc o 包e nl n数
e
据
c
,
t
采
用
o d b c
gg读 s o取 _ og r go el o
aeg ds l
he es eh te 包e
t
rr读
e- 取
abD daI . sF De 文
I
件
F
rr读
ee取
aae
ddx
_ xc
el e
x 包l
c
文
e
件
l
r o读 ep取 aee dnx . xc xl e l sl sx的 x 包x
b档
l
读
e
入
, 但
是
需
要
合
理
设
计
参
数
,
否
则
速
度
不
理
想
library(bigmemory) bigdata <- read.big.matrix(filename="<File name>",
sep="/", header=TRUE, skip=2)
假设我们有下述文本文档
21 49
9 1
21 19
9 3
51 39
6 2
下列命令可以读入该数据
data<-scan("e:/birth.txt") data
## [1] 24 1991 21 1993 53 1962
此外,你代码稍加改造可以将数据变矩阵。
matrix(data,nrow=2,byrow=FALSE)
二进制数据读入
二进制数据由二进制浮点组成,8 个浮点为一个字节。可以使用 readBin 函数读入 此类数据。
connection <- file("<path to your file>", "rb") #You open the connection as "reading binary"(rb) data <- readBin(connection,
what="numeric") #Mode of the vector to be read
GIS 数据读入
地理信息数据在 R 中也比较常用,常见的 rgdal 和 raster 包都有对应的函数处理此 类数据。
大型数据集的读入
如何导入较大的数据一直是 R 用户的经常讨论的问题,除了将数据导入数据库中 处理外,也有一些比较不错的处理大型数据的方法。
另外,还可以使用 read.fortran()函数读取数据,详细方法可以参见 help 文档理 解。
导入 excel 数据
剪切板导入 excel 表格
如果你已经有了个打开的表格,你可以复制其中的内容,然后用 readClipboard() 或者 read.table()函数导入数据。 readClipboard() #Only on Windows read.table(file="clipboard")`
,
n c d f 包
rf 读
eo入
ar D deB . iF dg文 bn件 f包
rr读
e- 入
ab无
da格
.f s 式
t a
e
列
b
联
l
表
e
F
l
a
t
c
o
n
t
i
n
g
e
n
c
y
t
a b l e
f d大
r a型
et 文
aa本
d .t 文
a b
档
l读
e入
包
r e a d .t a b l e .f f d f
• data.table 包中的 fread 函数是比较容易实现快速读入大数据的方法,读入大 型数据速度相当理想。
library(data.table) data <- fread("http://assets.datacamp.com/blog_assets/chol.txt",
sep=auto, nrows = -1, na.strings = c("NA","N/A",""), stringsAsFactors=FALSE )
,
R P o s t g r e S Q L 包
,
R S Q L i t e 包
,
R J D B C 包
rr读
e- 入
ab二
da进
B i n
s e
制 文
件
…h 读 d入 fh 5d 包f ,文
h件 5, rN 包A ,S rA h和 dU fC 5A 包R ,常
R用 N气
e象 t数 C据 D读 F取 包
##
[,1] [,2] [,3]
## [1,] 24 21 53
## [2,] 1991 1993 1962
scan()也同样支持访问 url 数据上的数据,现在我们访问网上的一个 age 数据
data <- scan("https://s3.amazonaws.com/assets.datacamp.com/blog_assets/
• sqldf 包,此包也可以考虑用于处理大型数据,它还可以使用 sql 语句处理数 据。用 read.csv.sql()函数读入数据。
library(sqldf) bigdata <- read.csv.sql(file="<Path to your file>",
sql="select * from file where ...", colClasses=c("character",
bB 包文
件
rf 读
eo取
ar O dec
. it oga
c nv
t 包e
a
文
v
件
e
rf 读
eo取
ar W dee
. ik aga r n属
f 包性
f
关
系
文
件
(
A R F F )
… m各
o类
n常
g见
o数
li 据
t e
库
包导
,入
R数
m据
o到
nR
来自百度文库
g
o
包
,
R O D B C 包
,
R o r a c l e 包
R 语言数据导入
来源:DataCamp Blog 编译:亮亮 上期我们了解了 R 语言数据读入的核心函数 read.table,现在我们了解一下其他可 以用的函数有哪些,以及使用的场景和基本技巧。
非关系结构文件读入 scan()
除了 read.table()这类读取文本文档的函数,还可以用 scan()函数读入。不同的是 它的返回值为列表或者向量。
函来描 数源述
sr顺 c- 序 ab读 na 取
s文 e件
中
的
数
据
值
rr按
e- 行
ab和
da指
.f s 定
we f
列
宽
度
读
取
数
据
rr采
e- 用
abf
dao .f s r
oet
r
r
t
a
r
n
a
格
n式
设 置 读 取 固 定 格 式 数 据
rr读
e- 取
ab剪
da切
Cs 板
li p
e
中
b
的
o
数
a
据
r
d
o R读
• 当你读入了 Excel 数据表后,相当于建立了一个连接,你可以使用 sql 语句来操 作数据
query <- "<SQL Query>" data <- sqlQuery(connection,
query) str(data)
用 RODBC 包的建立了连接后,在操作完数据要使用 odbcCloseAll()
det
_ na
d 包t
t
a
a文
件
rf 读 eo取 ar s dga . es xi 文 pn件 o包 r, ts
a s X P O R T
包
rf 读 eo取 ar s de. is Sgp
nl 包u
s 文
件
rf 读 eo取 ar e dep . ii egI pnn ii 包 f
no
f
文
o件
r R读 e. 取 a mM daA Mt T al L t aA
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 传入参数中。这些参数在不同的数据结构下,会有所不同。
r e a d . c s v .f f d f
…大
型 f文 f本 包文
档 读 入
r b大
ei 型
ag文
d m本
. e文
b i
m o
档
gr 读
. y入
m 包,
a无
t
法
r
在
i
w
x
i
n
d
o
w
s
下
使
用
rs大
eq型
al 文
dd本
. f文
c s
包 档
v
读
.
入
s
q
l
rr大
e- 型
ab文 da本 .t s 文 ae
固定列宽数据读入 read.fwf()
有的时候我们可以知道每一列的宽度是多少,下列代码可以让我们读入这类数据
data <- read.fwf("https://s3.amazonaws.com/assets.datacamp.com/blog_ass ets/scores.txt", widths= c(7,-14,1,-2,1,1,1,1,1,1),
l s x 文
件
rr读 ee取 aao ddp
. Oe o Dn dSd s 包o
c u m e n t 表
格
文
档
fj读 rs取 ooJ mn a J li v St a Oe S N 包c
r i p t 的
j s o n 文
件
r h读
ea取
avs
dep
_ ns
s 包s
p文
s
件
s
r h读 ea取
avs
rep("numeric",10)))
• 随后我们别忘了 R 中的 read.table 函数,但是,用此函数读入大型数据,需要 对参数有较好的控制。简单说,你能设置的参数越多,读入数据的速度越快。
总结
最后,我们将上述常见的方法做个了总结表格,读者可在用时参考,该表格涵盖了 大部分常用数据格式的读入方法。
其他方法读入 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 等。
age.csv",
what = list(Age = 0,
data
Name= "", Birthyear= 0), skip=1, sep=",", quiet=TRUE)
注意上述代码中的 what 参数,如果 what 为 list 类通过上述代码可以读入类似于 spreadsheet 类型的文本文档。只需要定义每行中各个项目(列)的类型。scan() 其他众多参数的用法和 read.table 比较类似。
RODBC 包读入 excel 数据
通过 RODBC 包同样可以导入 excel 数据表。代码样例如下 library(RODBC) connection <- odbcConnect("<DSN>")
其中,dsn 的写法可以参考 odbcConnect()函数的帮助文档。此外, odbcConnectExcel()同样可以读入 excel 数据。
• ff 包:该程序包磁盘缓存的技术可以读入超过内存限值大小的数据,常用的函 数有 read.table.ffdf(),read.csv.ffdf()等。
library(ff) bigdata <- read.table.ffdf(file="<Path to file>",
nrows=n, fileEncoding="", levels=NULL, FUN="read.table")
d O取
b De c Bx
CCc o 包e nl n数
e
据
c
,
t
采
用
o d b c
gg读 s o取 _ og r go el o
aeg ds l
he es eh te 包e
t
rr读
e- 取
abD daI . sF De 文
I
件
F
rr读
ee取
aae
ddx
_ xc
el e
x 包l
c
文
e
件
l
r o读 ep取 aee dnx . xc xl e l sl sx的 x 包x
b档
l
读
e
入
, 但
是
需
要
合
理
设
计
参
数
,
否
则
速
度
不
理
想