《R语言数据分析》——1.2 文本文件编译测试平台

R语言文本文件高效处理
本书介绍了使用data.table包在R语言中高效处理文本文件的方法。data.table包提供了fread函数,相较于传统的read.table,其数据导入速度更快,并且能够处理大规模数据集。通过将数据保存为data.table类,可以实现更快速的数据聚合、合并和重构。

本节书摘来自华章出版社《R语言数据分析》一书中的第1章,第1.2节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.2 文本文件编译测试平台

从平面文件处理和导入一定规模的数据集到R还可以使用data.table包。该开发包语法格式与传统基于S的R语言不同,它也拥有大量的参考文档、页面以及针对各类数据库行为设计的令人印象深刻的优化操作的案例。我们将在本书第3章以及第4章中讨论类似应用和案例。

它提供了一个经用户优化后的R函数来处理文本文件:

QQ_20170525095823

相对之前的样例,数据的导入速度非常快,算法的处理结果存放在特定的data.table类中,如果有必要可以将其转换成传统的data.frame类型:

QQ_20170525095827

或者使用setDF函数,该函数也提供了非常快速和恰当的对象转换方法,这种转换并不需要将数据先复制到内存中。同样,也需要注意:

QQ_20170525095832

以上操作意味着data.table对象可以被当作data.frame类型并采用传统方式对其进行处理。保持导入的数据格式不变还是将其转换为data.frame类型要依据之后具体操作要求而确定。数据的聚集、合并和重构使用data.table格式的对象,其操作速度要比使用数据框这一标准的R数据格式更快。另外,用户也需要了解data.table的数据格式语法,例如,DT[i, j, by]表示告诉R“用i来选出行的子集,并计算通过by来分组的j”,我们将在第3章讨论相关语法。

现在,让我们比较一下之前提到的这些数据导入方法,到底它们有多快?最终的赢家看起来应该是data.table包中的fread函数。我们将通过设计下列测试函数来确定一些待测试的方法:

QQ_20170525095836

现在,为了节约一些时间,我们将以上这些函数各运行10次,而不是像之前进行数百次的迭代操作:

QQ_20170525095841

然后,按规定字体大小输出测试结果:

QQ_20170525095844

注意,这里我们处理的数据集大小都没超过实际物理内存,其中一些开发包被设计为能够处理大规模的数据集。这意味着,如果对read.table进行优化,能够获得比默认配置更好的处理性能。因此,如果要快速导入规模合适的数据集,推荐使用data.table包。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值