你可能喜欢

在R中进行月环比比较

信息世界|2019年6月26日

查看使用dplyr和lubridate在R中计算月与月、周与周和年与年的比较的各种方法。

版权©2019Raybet2

嗨。我是IDG通信公司的Sharon Machlis,现在给大家介绍《用R做更多:月-月-年计算》第30集。
如果您曾经需要分析诸如“上个月vs上个月”或“上个月vs一年前的同一个月”这样的变化,R是一个不错的选择。这些计算很容易。而且,您不必担心电子表格公式是否被正确地单击和拖动以覆盖所有需要的单元格。
和R中的很多东西一样,有很多方法可以做到这一点。我给你们看几个例子。
首先,我将导入一些关于每天骑蓝单车出行的数据,以及波士顿、剑桥和其他三个附近城市的自行车共享系统。如果你想了解更多,InfoWorld上的相关文章提供了相关数据。

我的初始演练将有一些额外的步骤,以便您可以看到发生了什么。
第一个代码块将一个名为YearMonth的新列添加到数据中。它使用base R的format()函数;它为每个旅行开始日期创建yyyy-mm格式。接下来是一个典型的dplyr group_by和summarize。在本例中,我按年、月进行分组,然后在每个组中创建一个名为MonthlyTrips的列,其中包含该月所有旅行的总和。最后,我确保数据是按年按月整理的。
现在我已经得到了每月的小计,我将使用dplyr的lag()函数计算每月和每年的变化。lag()默认为“数据帧列中当前顺序的前一个值”。“你可以改变你想要延迟的条目的数量,让它超过1。为了与前一个月进行比较,默认值为1就可以了。为了与前一年进行比较,我希望延迟为12,因为有12个项目被退回。注意,这只在没有任何丢失月份的情况下有效。您可能需要添加一些代码来确保这一点。
您还可以设置您想排序的列,如果数据不是按该列排序的话,还可以设置延迟。(在本例中我不需要这样做,因为我的数据已经按年按月排序了。)
所有的数据都在这里,尽管格式可以更好。这段代码将分数乘以100以创建百分数格式,然后四舍五入到小数点后1位。
这是月度报告最简单的例子——每个月只有一个数据点。但是,有时您需要每月跟踪多个类别,比如按城市、年龄组或客户类型进行的比较。为此调整这段代码很容易,在汇总之前,您只需根据类别和月份进行分组。
看这里,我和之前做的一样,除了我还想按月和用户类型比较旅行。该数据集中有两种类型的用户:“客户”和“订户”。我正在读取数据,添加年月栏,按年月和用户类型进行分组,然后像以前一样做其他事情:计算每个月的旅行次数,然后进行安排。你不必像按月份那样按类别排列,但我发现这样更容易阅读结果
这里是按订阅者用户类型和客户用户类型进行的月度和年度比较。
这也可以使用一些数据格式将分数转换成百分比。
现在使用ggplot2很容易绘制数据,因为它是正确的格式。我将加载库并创建图形。
如果报告只需要“上个月”,那么可以使用dplyr的filter()函数并将YearMonth列设置为该数据的最大值。
每周的情况略有不同。为此,我通常使用“星期开始日期”,而不是像年连字符周数这样的格式。当一年的开始和结束有部分周时,周数会变得复杂
对于每周报告,我将使用lubridate包及其floor_date()函数。还可以使用base R的cut.Date()函数,但这有点复杂,因为它返回的是因子而不是日期,所以我通常会运行额外的代码将它们返回到日期。Floor_date()是我想要的。
为了创建我的“weekstart”列,我使用floor_date, date列作为第一个参数,而“weeks”作为我的单位。
接下来是通常的计算,这次是周比周和年比。值得注意的是,年复一年,这一差距是52,而不是12。我还需要知道我的数据,我有每周的行。
如果你在想——好吧,这很简单,但是仅仅为了每周的报告,仍然需要大量的输入……做一个RStudio代码片段吧!如果您不知道它们是如何工作的,请查看关于代码片段的Do More With R章节。
以下是我为《每月报告》制作的片段:
你也可以下载它在相关文章-网址应该在屏幕上。如果我打开一个新的R脚本文件并加载代码片段。我有一个月报的脚本模板。我现在可以为每个变量制表。
现在你知道了:一旦它建立起来,可能比Excel还要快。
这就是这节课中,谢谢收看!要了解更多关于R的技巧,请访问go。infoworld。com的“用R做更多的事情”页面
你也可以在YouTube IDG Tech Talk频道上找到Do More With R播放列表。
希望下一集见!
受欢迎的
来自IDG.tv的特色视频