rio极简数据导入教程

作者: 柳叶刀与小鼠标 | 来源:发表于2020-04-17 17:56 被阅读0次

rio 包的目的是使得数据导入尽可能的简单化。

  • import() 函数提供了一个非常舒服的可以自动导入数据集的体验,它可以根据数据集的特征自动选择import或者read的函数,并且也支持指定格式的导入。
  • import_list()支持‘multi-object’文件的导入,例如:(Excel workbook, .Rdata files, zip directory, or HTML file)
  • export() 函数使得数据的导出非常简单。

示例

这里有一些示例包括:读入,写出,转换。

写出

主要由export()函数完成

library("rio")
export(mtcars, "mtcars.csv") # comma-separated values
export(mtcars, "mtcars.rds") # R serialized
export(mtcars, "mtcars.sav") # SPSS

并且rio包的export函数支持将数据保存为压缩格式的文件

export(mtcars, "mtcars.tsv.zip")

export() 函数同样可以保存多个数据库为一个文件,例如Excel 文件

export(list(mtcars = mtcars, iris = iris), file = "mtcars.xlsx")

写入

主要由import()来完成

x <- import("mtcars.csv")
y <- import("mtcars.rds")
z <- import("mtcars.sav")
# confirm data match
all.equal(x, y, check.attributes = FALSE)
## [1] TRUE
all.equal(x, z, check.attributes = FALSE)
## [1] TRUE

现在rio包支持读取multi object的文件例如(Excel workbook, .Rdata file, zip directory, or HTML file)

str(m <- import_list("mtcars.xlsx"))
## List of 2
##  $ mtcars:'data.frame':  32 obs. of  11 variables:
##   ..$ mpg : num [1:32] 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
##   ..$ cyl : num [1:32] 6 6 4 6 8 6 8 4 4 6 ...
##   ..$ disp: num [1:32] 160 160 108 258 360 ...
##   ..$ hp  : num [1:32] 110 110 93 110 175 105 245 62 95 123 ...
##   ..$ drat: num [1:32] 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
##   ..$ wt  : num [1:32] 2.62 2.88 2.32 3.21 3.44 ...
##   ..$ qsec: num [1:32] 16.5 17 18.6 19.4 17 ...
##   ..$ vs  : num [1:32] 0 0 1 1 0 1 0 1 1 1 ...
##   ..$ am  : num [1:32] 1 1 1 0 0 0 0 0 0 0 ...
##   ..$ gear: num [1:32] 4 4 4 3 3 3 3 4 4 4 ...
##   ..$ carb: num [1:32] 4 4 1 1 2 1 4 2 2 4 ...
##  $ iris  :'data.frame':  150 obs. of  5 variables:
##   ..$ Sepal.Length: num [1:150] 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##   ..$ Sepal.Width : num [1:150] 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##   ..$ Petal.Length: num [1:150] 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##   ..$ Petal.Width : num [1:150] 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##   ..$ Species     : chr [1:150] "setosa" "setosa" "setosa" "setosa" ...

将multi object文件保存

export_list(m, "%s.tsv")
## Error in export_list(m, "%s.tsv"): could not find function "export_list"
c("mtcars.tsv", "iris.tsv") %in% dir()
## [1] FALSE FALSE

转换

convert() 函数将 import() 函数和export() 函数合二为一,可以实时的读取文件同时将它保存。

convert("mtcars.sav", "mtcars.dta")

同样可以在命令行中直接读取 Stata (.dta) ,并将它转化保存为(.csv),

Rscript -e "rio::convert('iris.dta', 'iris.csv')"

支持的文件类型,如下所示

install_formats()
Format Typical Extension Import Package Export Package Installed by Default
Comma-separated data .csv data.table data.table Yes
Pipe-separated data .psv data.table data.table Yes
Tab-separated data .tsv data.table data.table Yes
CSVY (CSV + YAML metadata header) .csvy data.table data.table Yes
SAS .sas7bdat haven haven Yes
SPSS .sav haven haven Yes
Stata .dta haven haven Yes
SAS XPORT .xpt haven haven Yes
SPSS Portable .por haven Yes
Excel .xls readxl Yes
Excel .xlsx readxl openxlsx Yes
R syntax .R base base Yes
Saved R objects .RData, .rda base base Yes
Serialized R objects .rds base base Yes
Epiinfo .rec foreign Yes
Minitab .mtp foreign Yes
Systat .syd foreign Yes
"XBASE" database files .dbf foreign foreign Yes
Weka Attribute-Relation File Format .arff foreign foreign Yes
Data Interchange Format .dif utils Yes
Fortran data no recognized extension utils Yes
Fixed-width format data .fwf utils utils Yes
gzip comma-separated data .csv.gz utils utils Yes
Apache Arrow (Parquet) .parquet arrow arrow No
EViews .wf1 hexView No
Feather R/Python interchange format .feather feather feather No
Fast Storage .fst fst fst No
JSON .json jsonlite jsonlite No
Matlab .mat rmatio rmatio No
OpenDocument Spreadsheet .ods readODS readODS No
HTML Tables .html xml2 xml2 No
Shallow XML documents .xml xml2 xml2 No
YAML .yml yaml yaml No
Clipboard default is tsv clipr clipr No
Google Sheets as Comma-separated data
Graphpad Prism .pzfx pzfx pzfx No

如果是rio包无法识别的文件类型,则会返回下列的报错:"Unrecognized file format"

安装rio包

经典版本

install.packages("rio")
install_formats()

最近版本:

if (!require("remotes")){
    install.packages("remotes")
}
remotes::install_github("leeper/rio")

相关文章

  • rio极简数据导入教程

    rio 包的目的是使得数据导入尽可能的简单化。 import() 函数提供了一个非常舒服的可以自动导入数据集的体验...

  • 用rio包进行数据导出

    笔记说明 数据导入利器——rio包中记录了rio包的数据导入功能,本次笔记记录rio包的数据导出功能。主要参考:h...

  • 数据导入利器——rio包

    笔记说明 在读《Modern R with the tidyverse》一书时发现了这个非常好用的R包,做此笔记记...

  • ClickHouse SQL 语法基础极简教程 + bitmap

    ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例 查看所有数据库 创建数据...

  • 01 Go极简教程 目录

    极简教程的初衷是给已有其他语言基础的人阅读尽可能少的内容学习Go语言 Go极简教程 目录 Go极简教程 环境安装及...

  • 关联规则(二)

    参考:数据挖掘入门系列教程(五)之Apriori算法Python实现Python 极简关联分析(购物篮分析) 数据...

  • 数据处理——Python

    本场 Chat 为 Python 数据处理课程,包括: Python 基础知识(极简教程) 提升 Python 代...

  • 《Kotlin 极简教程 》第5章 集合类(1)

    《Kotlin 极简教程 》第5章 集合类 《Kotlin极简教程》正式上架: 点击这里 > 去京东商城购买阅读 ...

  • Nginx 极简教程

    Nginx 极简教程 本项目是一个 Nginx 极简教程,目的在于帮助新手快速入门 Nginx。examples ...

  • ClickHouse SQL 语法极简教程

    ClickHouse SQL 语法极简教程 ClickHouse是一个用于联机分析(OLAP)的列式数据库管理系统...

网友评论

    本文标题:rio极简数据导入教程

    本文链接:https://www.haomeiwen.com/subject/nswyvhtx.html