【技巧】如何快速按照日期分组
问题的提出
在处理数据的时候,我们常常需要按照日期对数据进行分类汇总,例如每周、每月、每年汇总等。 常见的做法是建立一个用于分类的变量,然后再按照这个变量进行汇总。 然而这种做法特别麻烦,因为我们常常要尝试多种不同的分类长度,很难 事先 就一次性创建好用于分类的变量。
再次,这种常规方法很难处理一些不规则的日期间隔,例如我希望 每隔3天 对数据汇总一次;或者再变态一点,我希望把数据分成两组:一组是周三,另一组是非周三。遇到这种情况,我们该怎么办呢?
本期大猫将教大家使用
data.table
包的
keyby
语句完成上述任务。使用
data.table
的好处是:
- 不需要事先创建分类变量,啥时想分类了,直接分就可以(group on the fly)
- 速度特别、特别快!
- 代码非常、非常简洁!(也就十几个字符!)
注:文章中所有代码块都可以水平滚动!不信滑滑看?
实战操作
生成样例数据集
首先我们生成一个样例数据集:
# 生成 100 个日期,从2018-01-01开始
set.seed(42)