嗨。我是IDG的Sharon Machlis,这里是《Do More with R: dplyr syntax + data》第37集。表速度与新的dtplyr 1.0包。
整理和数据的世界。本周,随着CRAN上dtplyr 1.0的发布,这个表又向前迈进了一步。它允许tidyverse的dplyr语法的爱好者访问数据。表速度的后端-所有不需要学习新的格式为他们的代码。
但是对于想要学习如何使用data.table的dplyr用户也有好消息。那是因为你可以看到数据。dtplyr从dplyr函数生成的表代码。
让我们来看看。
在今年五月至八月间美国机场航班延误:我会通过导入数据集有两个半百万行启动。
接下来,我将使用regular dplyr按航空公司查找每个目的地机场的平均到达延迟,首先按机场排序,然后按每个机场的平均延迟(从最大到最小)排序。
那么,我怎么用dtplyr来做呢?首先,我要为我的数据创建一个“惰性”数据表版本。(“懒惰”只是意味着代码不会立即执行,而是只有在特别请求时才执行。)
这个“惰性”对象是dtplyr“step”对象,您可以通过检查它的类看到这一点。如果我打印出来。
检查最后一行中的消息。如果我想访问这个惰性dtplyr对象中的数据,我需要将其转换为数据。表,数据框架,或tibble。它不是一种常规数据框架。
好了,接下来,我可以在惰性对象上运行与之前相同的dplyr代码。如果我打印出结果,我看到我有另一个懒惰的对象。同样,如果我想访问数据,我需要将它转换回数据表、数据框架或tibble。但是看上面的调用:显示了数据。由dtplyr生成的表代码。
您可以使用该代码来使用数据运行相同的命令。表包本身。首先,我现在需要将数据作为数据表。如果我复制Call: code并将DT2更改为mydt,它应该可以工作。就这样。
总括来说,这是一个使用dtplyr全码:创建一个懒惰的数据表,运行常用的dplyr代码,然后把结果返回到数据帧,tibble或数据表。
在这段代码中,我没有像以前那样创建该对象的第二个独立延迟副本。我不想做大数据。相反,我在管道命令的第一步中创建了惰性数据表,希望您可以在这里看到。
我来运行一下。我希望你们能看到它有多快。我运行了一些粗略的基准测试,对于这个特定任务,dtplyr的速度快了4到5倍。与以往一样,速度比较取决于所使用的数据集和操作。但可以肯定的是,dtplyr通常会比dplyr快。如果您的数据集足够大,速度非常重要,并且您是一个dplyr语法迷,那么dtplyr可能是一个不错的选择。我正在考虑将一些漂亮的Web应用程序代码从dplyr重写为dtplyr,以提高性能。
如果你是一个想学习数据的tidyverse用户。对于将熟悉的代码转换为正在学习的代码,dtplyr可能是一个很好的工具。
这就是本期节目的全部内容,感谢收看!要了解更多关于R的技巧,请访问go。infoworld。com的“用R做更多的事情”页面。
你也可以在YouTube的IDG Tech Talk频道上找到Do More With R播放列表——在那里你可以订阅,这样你就不会错过任何一集了。希望下次见到您,那时我将讨论三种连接数据的方法:base R、dplyr和data.table。