《R语言数据分析》——3.3 测试

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

3.3 测试

正如在前述章节中讨论过的内容一样,借助microbenchmark包,我们可以在一台机器上重复执行若干遍函数,以获得一些可重现的性能测试结果。

现在,需要先定义作为测试基准的函数,以下一些函数都是从前面样例中挑选出来的:


前面已经介绍过dplyr包的summarise函数需要耗费一些时间用于数据预处理,因此下面我们将重新定义一个函数能够支持在聚集操作时生成新的数据结构:

类似地,在测试data.table时,也需要一些专门用于测试环境的附加变量,由于hlf?ights_dt已经根据DayofWeek的值进行了排序,我们可以为测试创建一个新的data.table对象:

更进一步地,说清楚该对象没有键值可能也有些必要:

现在,我们可以对data.table测试案例上定义函数,并且实现对象到data.table的转换,同时为了和dplyr一致,在转换后的data.table上添加键值:

到这一步,我们已经完成了测试的准备任务,下面可以导入microbenchmark包继续后面的工作了:


结果非常不错:从之前高于2000毫秒的执行时间,经过工具优化后,缩短为只需要大约1毫秒的时间:

因此,看起来dplyr包是最有效的解决方法,尽管它需要考虑一些额外(对data.frame进行分组)的操作,该方法依然具有毋庸置疑的优势。事实上,如果我们已经准备好了一个data.table对象,就能够节约从data.frame转换到data.table的时间,而data.table的效果要比dplyr更好。不过我估计读者可能并未注意到两个高效方案在时间上的差别。在处理更大规模的数据集时,这两种方法性能都不错。

值得注意的是,dplyr包只能处理data.table对象,因此,我们不用固定在任意一种方法上,在必要时同时使用两种方法都可以。以下是一个POC样例:


现在,我们已经对使用data.table或者是dplyr计算数据分组平均值的过程非常清楚了。但假如是更复杂的操作又该如何解决呢?

时间: 2024-09-29 23:08:07

《R语言数据分析》——3.3 测试的相关文章

《R语言数据分析》——第3章 数据筛选和汇总 3.1 去掉多余的数据

本节书摘来自华章出版社<R语言数据分析>一书中的第3章,第3.1节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 第3章 数据筛选和汇总 当我们从平面文件或数据库(第1章),或直接通过某些API从Web(第2章)完成数据导入后,在开始实际的数据分析操作之前,经常会有必要对原始数据展开聚集.转换及筛选操作. 本章,我们将关注以下内容: 对数据框对象进行行或列筛选 对数据进行汇总和聚集 除了基础的R方法,掌握通

《R语言数据分析》——3.5 小结

本节书摘来自华章出版社<R语言数据分析>一书中的第3章,第3.5节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 3.5 小结 本章,我们介绍了一些简单有效的应用于数据筛选和汇总的方法,也给出了筛选数据集行列数据的一些案例,并探讨了如何对数据进行汇总以进行进一步的分析.我们基本介绍完了绝大多数能够实现这些任务的最流行的方法,并在一个可重复的样例和测试平台上对这些方法的性能进行了比较. 在下一章节,我们将继续

《R语言数据分析》——1.7 小结

本节书摘来自华章出版社<R语言数据分析>一书中的第1章,第1.7节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 1.7 小结 本章重点探讨了一些乏味但是很重要的工作,这些工作我们可能每天都要完成.对于每个数据科学项目而言,数据导入一定是第一步,因此要掌握数据分析就应该从如何有效地将数据导入到R会话中开始. 但是某种程度上,有效是个很含糊的概念:从技术角度出发,数据装载应该快速以免浪费我们的时间,但同时花几

《R语言数据分析》——2.2 其他流行的在线数据格式

本节书摘来自华章出版社<R语言数据分析>一书中的第2章,第2.2节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 2.2 其他流行的在线数据格式 在Web上数据通常采用XML或JSON两种格式存放,因为这两类文件都使用了人类可以理解的数据格式,从程序开发的角度而言也非常容易处理,同时也适合处理任意类型的层次化数据结构,而不像CSV文件一样仅能处理简单的表格数据. JSON最初源于JavaScript对象标识

《R语言数据分析》——2.3 从HTML表中读取数据

本节书摘来自华章出版社<R语言数据分析>一书中的第2章,第2.3节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 2.3 从HTML表中读取数据 万维网上传统的文本和数据以HTML页面为主,我们经常可以从例如HTML表找到一些有意思的信息,很容易就能通过复制和粘贴将数据转换成Excel电子表格,保存在磁盘上,稍后再导入到R中.但是这个过程比较费时间,也有点枯燥,因此可以考虑进行自动化处理. 可以借助前面提到

《R语言数据分析》——1.6 导入Excel电子表格

本节书摘来自华章出版社<R语言数据分析>一书中的第1章,第1.6节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 1.6 导入Excel电子表格 在学术界和商业界,除了CSV文件,Excel的xls(或xlsx,最近的一种新称呼)应该是应用最为广泛的进行存储和交换少量数据最为通用的数据格式.它最初源自Microsoft公司独有的二进制文件格式,对其文档的说明非常多(xls指南长达1100页,50M),但是对

《R语言数据分析》——第2章 从Web获取数据 2.1 从Internet导入数据集

本节书摘来自华章出版社<R语言数据分析>一书中的第2章,第2.1节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 第2章 从Web获取数据 实际项目中,经常会碰见所需数据不能从本地数据库或硬盘中获取而需要通过Internet获得的情况.此时,可以要求公司的IT部门或数据工程师按照下图所示的流程将原有的数据仓库扩展,从网络获取处理所需要的数据再倒入公司自己的数据库: 如果公司还没有建立ETL系统(抽取.转换装

《R语言数据分析》——2.4 从其他在线来源获取数据

本节书摘来自华章出版社<R语言数据分析>一书中的第2章,第2.4节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 2.4 从其他在线来源获取数据 尽管readHTMLTable非常实用,但某些时候数据不是以结构化格式存放在表格中,更可能就是以HTML表形式存储.我们首先访问http://cran.r-project.org/web/views/WebTechnologies.html 来了解一下R包在相应的

《R语言数据分析》——2.5 使用R包与数据源API交互

本节书摘来自华章出版社<R语言数据分析>一书中的第2章,第2.5节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问"华章计算机"公众号查看. 2.5 使用R包与数据源API交互 尽管我们能够读取HTML表格.CSV文件.JSON和XML数据,甚至某些HTML的原始文档,然后实现数据的存储,但花太多时间用来开发我们自己的工具意义并不大,除非我们再没有其他选择.因此,通常我们应该首先快速了解清楚Web Technologies以及Serv