将数据快速读入R—readr和readxl包

Hadley Wickham 和 RStudio团队写了一些新的R包,这些包对于每一个须要在R中读入数据的人来讲都是很是有用的。readr包提供了一些在R中读入文本数据的函数。readxl包提供了一些在R中读入Excel电子表格数据的函数。它们的读取速度远远超过你目前正在用的一些函数。html

readr包提供了若干函数在R中读取数据。咱们一般会用R中的read.table家族函数来完成咱们的数据读入任务。这里,readr包提供了许多替代函数。它们增长了额外的一些功能而且速度快不少。git

首先,read_table几乎代替了read.table。下面经过读取一个包含400万行的数据来比较它们的区别。点击这里下载该数据。github

注:在演示以前简单说下我电脑的配置:win7,64位操做系统,8G内存,CPU A6双核。电脑配置不行,原文给出的实验时间甩了我好几条街。但无论怎样,在现有的条件下效率确实提升了不少。原文用时见末尾连接。函数

这些命令看上去很是类似,可是read.table花的时间是50.62秒,而read_table完成相同的任务只花了2.76秒。这是由于read_table把数据当作是固定格式的文件,而且使用C++快速处理数据。操作系统

R中的基础包utils也有读取固定宽度数据的函数,下面的示例就能体现出readr的亮点:翻译

readr包的read_fwf函数用时3.97秒,而标准的read.fwf函数耗时1372秒。code

readr包中的其它函数包括:read_csv读取逗号分隔的数据(欧洲用的是read_csv2函数),read_tsv读取制表符分隔数据,read_lines函数从文件中逐行读取数据(很是适合复杂的后期处理)。它还能够读取多种格式的日期时间列,智能的将文本数据读取为字符串(再也不须要设置strings.as.factors=FALSE)。cdn

对于Excel格式的数据,这里有readxl包。这个包提供的函数能够读取.xls和.xlsx格式的Excel工做表。虽然这里没有演示read_execl函数的使用,可是它跟readr中的函数同样都是基于C++库的,所以读取速度应该也很快。最重要的是,它没有任何的外部依赖,所以你能够在任意平台上用它来读取数据—不要求安装了Excel。htm

readr包已发布在CRAN上,readxl能够从github安装。blog

本文由雪晴数据网负责翻译整理,原文请参考New packages for reading data into R — fast做者David Smith。转载请注明原文连接http://www.xueqing.cc/cms/article/102

相关文章
相关标签/搜索