小伙伴儿们有福啦,2015年4月10日,Hadley Wickham大牛(开发了著名的ggplots包和plyr包等)和RStudio小组又出新作啦,新作品readr包readxl包分别用于R读取text数据和Excel电子表格数据。事实上,R已经有了一堆读取数据的函数,比如read.table家族以及其巨多的变形,那么为了牛牛们为什么还要开发这两个包呢?原因很简单,这两个包的读取速度比R内置数据读入函数更快!!!记住哦,是快很多哈!不信,我们下来试试就知道啦!哈哈!平时读取小数据的童鞋可能不会有感觉,但读入的数据量比较大时,速度快就是一个很突出的优势啊,有木有?!废话不多说,上菜!

1)readr包示例

readr包提供了几个用R读取表格/文本数据的函数,并增添了额外的功能,而且更快!这在之间通常是用read.table家族函数来完成这些使命,现在可以轻松很多了啊!

首先,来看看readr包中第一个牛逼轰轰的函数read_table,它替换了之前read.table的功能,关键是更快,请记住,快、速度是这个包诞生的重要原因,可能是受大数据时代这股趋势的推动!我们来做一个实验!让这两个函数同时读取一个包含了4百万航数据的文件(数据地址:http://academic.udayton.edu/kissock/http/Weather/gsod95-current/NYNEWYOR.txt ),看看有什么有趣的发现!

Step1

看看数据格式,可以看到有四列,分别代表日,月,年和一个数值

Step2

打开R,运行以下命令,看看两个命令的运行时间!

> system.time(read_table(file = 'http://academic.udayton.edu/kissock/http/Weather/gsod95-current/NYNEWYOR.txt',col_names = c('DAY','MONTH','YEAR','TEMP')))

用户 系统 流逝

3.30 11.06 14.43

> system.time(read.table(file = 'http://academic.udayton.edu/kissock/http/Weather/gsod95-current/NYNEWYOR.txt',col.names = c('DAY','MONTH','YEAR','TEMP')))

用户 系统 流逝

1.92 1.62 96.10

这两个命令看起来类似,但是read.table函数大约花费了96.1秒完成,而read_table再不到15秒就完成啦(这可能是我这台破电脑的原因,官方的说法是:前者花了30秒左右,而后者不到一秒就搞定啦!!擦….这性能…无法比啊!)。也许有人会问,为什么会这样呢?原因在于:read_table函数把数据当成一个固定格式的稳健,底层使用C++快速的处理数据(与之对比的是,read.table支持列间任意数量的空格,而read_table要求每一列都排的很整齐,即一列中不能有"出头鸟")。但是,话是这么说,实际运用时,并没有这样严格的限制!

R基本包中有一个读取固定宽度数据集的函数,请看下面,再次见证readr包的神奇,对!!!就是这么神奇!!!

> system.time(dat <- read_fwf('http://academic.udayton.edu/kissock/http/Weather/gsod95-current/NYNEWYOR.txt',

+ fwf_widths(c(3,15,16,12),

+ col_names=c("DAY","MONTH","YEAR","TEMP"))))

用户 系统 流逝

0.67 1.70 2.40

> system.time(dat2 <- read.fwf('http://academic.udayton.edu/kissock/http/Weather/gsod95-current/NYNEWYOR.txt', c(3,15,16,12),

+ col.names=c("DAY","MONTH","YEAR","TEMP")))

用户 系统 流逝

0.73 0.49 89.03

看吧,这一对比,知道readr包的腻害了吧!

当然,上面只是readr包中一个简单的例子!readr中包括的其他函数还有:

readr::read_csv        Read a delimited file into a data frame.

readr::read_file        Read a file into a string.

readr::fwf_empty        Read a fixed width file.

readr::read_lines        Read lines from a file or string.

readr::read_log        Read common/combined log file.

readr::read_table        Read text file where columns are separated by whitespace.

2)readxl包示例

对于Excel格式的数据,对应了这里的readxl包,这个包提供了读取后缀为.xls和.xlsx格式的Excel表格。

需要注意地是,readxl包是托管在https://github.com/hadley/readxl 上的,因此,安装的时候安装地址要指定是github上的readxl库!

> library(devtools) #先安装这个包,可以快速的完成readxl包的安装!!!

> library(devtools)

> devtools::install_github("hadley/readxl")

目前,readxl包提供的函数只有read_excel,格式如下

Read_excel(spreadsheet, sheet=1, na,…. )

使用方法一看便知,这里就不再啰嗦啦!感兴趣的小伙伴儿赶紧去亲自探索吧!!!

R0—New packages for reading data into R — fast的更多相关文章

  1. Importing data in R 1

    目录 Importing data in R 学习笔记1 flat files:CSV txt文件 packages:readr read_csv() read_tsv read_delim() da ...

  2. 【MySQL】MySQL同步报错-> Last_IO_Error: Got fatal error 1236 from master when reading data from binary log

    这个报错网上搜索了一下,大部分是由于MySQL意外关闭或强制重启造成的binlog文件事务点读取异常造成的主从同步报错 Last_IO_Error: Got fatal error 1236 from ...

  3. mysql 主从 Got fatal error 1236 from master when reading data from binary log: 'Could not find first 错误

    本地MySQL环境,是两台MySQL做M-M复制.今天发现错误信息: mysql 5.5.28-log> show slave status\G ************************ ...

  4. Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary lo

    mysql> show slave status\G *************************** 1. row ***************************         ...

  5. SQL data reader reading data performance test

    /*Author: Jiangong SUN*/ As I've manipulated a lot of data using SQL data reader in recent project. ...

  6. OpenTSDB-Querying or Reading Data

    Querying or Reading Data OpenTSDB offers a number of means to extract data such as CLI tools, an HTT ...

  7. Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'系列一:

    从库报这个错误:Got fatal error 1236 from master when reading data from binary log: 'Could not find first lo ...

  8. mysql从库Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'报错处理

    年后回来查看mysql运行状况与备份情况,登录mysql从库查看主从同步状态 mysql> show slave status\G; *************************** . ...

  9. (转) 6 ways of mean-centering data in R

    6 ways of mean-centering data in R 怎么scale我们的数据? 还是要看我们自己数据的特征. 如何找到我们数据的中心? Cluster analysis with K ...

随机推荐

  1. erlang中检查内存泄露

    最近项目内存占用过多,检查一下erlang的内存使用情况. 1. 通过etop可以很方便得出erlang内存使用的情况 spawn(fun() -> etop:start([{output, t ...

  2. 6/2 sprint2 看板和燃尽图的更新

  3. 2nd 本周例行报告

    每周例行报告 1.个人项目:词频统计更新 C类型 C内容 S开始时间 E结束时间 I间隔(min) T净时间(min) 分析 功能分析 8:30 10:00 20 70 学习 查阅资料 10:00 1 ...

  4. java 基础 --Collection(Set)

    注意: 如果hashSet存储自定义对象,一定要重写hashCode()&&equals() 如果TreeSet存储自定义对象,让元素所属的类实现自然排序接口Comparable,并重 ...

  5. bootstrap 中的静态模式的控制按钮上的一个坑

    在使用modal时发现,代码:<button class="btn btn-danger" data-toggle="modal" data-target ...

  6. varnish启动报错

    错误1.Starting Varnish Cache: Error: Cannot open socket: :80: Address family not supported by protocol ...

  7. 获取http和ftp地址的图片

    根据http和ftp图片地址获取对应图片的缩略图和原图 public class GetBitmapImageClass { public BitmapSource GetImageHttp(stri ...

  8. jQuery高度及位置操作

    1. 获取滑轮位置,scrolltop:上下滚动的意思. <!DOCTYPE html> <html lang="en"> <head> < ...

  9. Docker学习笔记五:Docker生成jenkins容器,支持Java Web项目持续集成、持续部署

    一.创建jenkins容器: 1.拉取jeknin镜像 sudo docker pull jenkins 2.创建一个jenkins目录 sudo mkdir /jenkins 3.在jenkins目 ...

  10. Mac下安装MacProt,并GNU autotools的安装和使用 autoconf,automake

    1 MacPort的下载:http://www.macports.org/install.php, 需要安装xCode支持macport 2 安装MacPorts 与其他Mac的软件的安装方式相同,挂 ...