规模数据导入高效方式︱将数据快速读入R—readr和readxl包
本文由雪晴数据网负责翻译整理,原文请参考New packages for reading data into R — fast作者David
Smith。转载请注明原文链接http://www.xueqing.tv/cms/article/102昨天在新电脑使用xlsx包的时候,因为加载rJava十分不悦…于是用了readxl,不要太方便,于是转一篇过来备用着。以后读入都用你了~
Hadley Wickham 和 RStudio团队写了一些新的R包,这些包对于每个需要在R中读入数据的人来说都是非常有用的。readr包提供了一些在R中读入文本数据的函数。readxl包提供了一些在R中读入Excel电子表格数据的函数。它们的读取速度远远超过你目前正在用的一些函数。
readr包提供了若干函数在R中读取数据。我们通常会用R中的read.table家族函数来完成我们的数据读入任务。这里,readr包提供了许多替代函数。它们增加了额外的一些功能并且速度快很多。
首先,read_table几乎代替了read.table。下面通过读取一个包含400万行的数据来比较它们的区别。点击这里下载该数据。
注1:在演示之前简单说下我电脑的配置:win7,64位操作系统,8G内存,CPU A6双核。电脑配置不行,原文给出的实验时间甩了我好几条街。但不管怎样,在现有的条件下效率确实提高了很多。原文用时见末尾链接。
注2:如果读取中文数据出现乱码,在编辑器设置下字符编码为”UTF-8”
system.time(read_table("C:\\Users\\a\\Desktop\\biggerfile.txt",
col_names=c("DAY","MONTH","YEAR","TEMP")))
system.time(read.table("C:\\Users\\a\\Desktop\\biggerfile.txt",
col.names=c("DAY","MONTH","YEAR","TEMP")))
这些命令看上去非常相似,但是read.table花的时间是50.62秒,而read_table完成相同的任务只花了2.76秒。这是因为read_table把数据当做是固定格式的文件,并且使用C++快速处理数据。
R中的基础包utils也有读取固定宽度数据的函数,下面的示例就能体现出readr的亮点:
system.time(read_fwf("C:\\Users\\a\\Desktop\\biggerfile.txt",
fwf_widths(c(3,15,16,12),
col_names=c("DAY","MONTH","YEAR","TEMP"))))
system.time(read.fwf("C:\\Users\\a\\Desktop\\biggerfile.txt",
c(3,15,16,12),
col.ames=c("DAY","MONTH","YEAR","TEMP")))
readr包的read_fwf函数用时3.97秒,而标准的read.fwf函数耗时1372秒。
readr包中的其它函数包括:read_csv读取逗号分隔的数据(欧洲用的是read_csv2函数),read_tsv读取制表符分隔数据,read_lines函数从文件中逐行读取数据(非常适合复杂的后期处理)。它还可以读取多种格式的日期时间列,智能的将文本数据读取为字符串(不再需要设置strings.as.factors=FALSE)。
对于Excel格式的数据,这里有readxl包。这个包提供的函数可以读取.xls和.xlsx格式的Excel工作表。虽然这里没有演示read_execl函数的使用,但是它跟readr中的函数一样都是基于C++库的,因此读取速度应该也很快。最重要的是,它没有任何的外部依赖,因此你可以在任意平台上用它来读取数据—不要求安装了Excel。
readr包已发布在CRAN上,readxl可以从github安装。
规模数据导入高效方式︱将数据快速读入R—readr和readxl包的更多相关文章
- EXCEL 导入 R 的几种方法 R—readr和readxl包
导入Excel数据至R语言的几种方法 如有如下Excel数据源,如何将数据导入R语言呢?今天主要来介绍几种常见的方法: 一.使用剪贴板,然后使用read.table函数: 首先选择Excel中的数据源 ...
- C#使用oledb方式将excel数据导入到datagridview后数据被截断为 255 个字符
问题描述:在使用oledb方式将excel数据导入到datagridview中,在datagridview单元格中的数据没有显示全,似乎只截取了数据源中的一段 解决方案:1.关于该问题,微软官方答案: ...
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 将数据导入hive,将数据从hive导出
一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...
- 042 将数据导入hive,将数据从hive导出
一:将数据导入hive(六种方式) 1.从本地导入 load data local inpath 'file_path' into table tbname; 用于一般的场景. 2.从hdfs上导入数 ...
- 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...
- 游标、获取本地本地多个文件、Excel数据导入、跨服务器数据拷贝、行转列示例
)='C:\Users\Administrator\Desktop\待处理数据\顺江学校4\' ---------------------------------------------------- ...
- ORACLE 数据库选择性导出表中数据&导入已存在表数据
在dos界面下选择性导出表中的数据语句为: exp his/linker@orcl tables=(sysreprot) file="D:\20131218.dmp" query= ...
- redis的几种数据导入导出方式【转】
环境说明:202.102.221.11 redis源实例202.102.221.12 redis目标实例202.102.221.13 任意linux系统 一.redis-dump方式 1.安装redi ...
随机推荐
- AppScan扫描结果分析及工具栏使用
Appscan的窗口大概分三个模块,Application Links(应用链接), Security Issues(安全问题), and Analysis(分析) Application Links ...
- cookie和session的那些事
对于经常网购的朋友来说,经常会遇到一种情况: 打开淘宝或京东商城的首页,输入个人账号和密码进行登陆,然后进行购物,支付等操作都不需要用户再次输入用户名和密码 但是如果用户换一个浏览器或者等几个小时后再 ...
- mysql插入数据时检查是否某字段已存在
SELECT\n" + " '',\n" + " '{0}',\n" + " '{1}',\n" + " '{2}'\n ...
- 免费分享Navicat12各版本破解(仅供学习使用)
花了几个小时终于找到比较"绿色"的安装包了...(无力吐槽下现在网上好多挂羊头卖狗肉的网站) https://pan.baidu.com/s/1geMIkfT 密码:9a98 里面 ...
- BZOJ 1801: [Ahoi2009]chess 中国象棋 [DP 组合计数]
http://www.lydsy.com/JudgeOnline/problem.php?id=1801 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放 ...
- A 洛谷 P3601 签到题 [欧拉函数 质因子分解]
题目背景 这是一道签到题! 建议做题之前仔细阅读数据范围! 题目描述 我们定义一个函数:qiandao(x)为小于等于x的数中与x不互质的数的个数. 这题作为签到题,给出l和r,要求求. 输入输出格式 ...
- iterator和for of 循环
JavaScript 原有的表示"集合"的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就有了四种数据集合,用户还可以组合使用它们, ...
- vuex学习笔记
一.vuex的目的 把组件的共享状态抽取出来,以一个全局单例模式管理.在这种模式下,组件树构成了一个巨大的视图,不管在树的哪个位置,任何组件都能获取状态或触发行为. 二.vuex集中式管理数据 安装 ...
- jQuery源码逐行分析学习02(第一部分:jQuery的一些变量和函数)
第一次尝试使用Office Word,方便程度大大超过网页在线编辑,不过初次使用,一些内容不甚熟悉,望各位大神见谅~ 在上次的文章中,把整个jQuery的结构进行了梳理,得到了整个jQuery的简化结 ...
- SQL Server 页面查询超时(SOS_SCHEDULER_YIELD等待)
一.问题概述 问题大概是这样的,有一个功能页面经常查询超时,有时候就算能查询出来也要很长的时间,但是有时又会很快.遇到的这种问题在排除掉网络原因之后基本上可以从查询语句上去找原因. 编译查询SQL语句 ...