我正在使用一个数据集,该数据集按 dplyr
函数的 group_by
分组 . 每个组都有自己的时间索引,即假定由12个月的序列组成 . 这意味着它可以从1月开始到12月结束,或者在其他情况下可以从前一年的6月开始到明年5月结束 .
这是数据集示例:
ID DATE
8 2017-01-31
8 2017-02-28
8 2017-03-31
8 2017-04-30
8 2017-05-31
8 2017-06-30
8 2017-07-31
8 2017-08-31
8 2017-09-30
8 2017-10-31
8 2017-11-30
8 2017-12-31
32 2017-01-31
32 2017-02-28
32 2017-03-31
32 2017-04-30
32 2017-05-31
32 2017-06-30
32 2017-07-31
32 2017-08-31
32 2017-09-30
32 2017-10-31
32 2017-11-30
32 2017-12-31
45 2016-09-30
45 2016-10-31
45 2016-11-30
45 2016-12-31
45 2017-01-31
45 2017-02-28
45 2017-03-31
45 2017-04-30
45 2017-05-31
45 2017-06-30
45 2017-07-31
45 2017-08-31
如果有所谓的"jumps",换句话说,如果日期是一致的,问题是由于数据集维度,我无法确认或验证visualy . 是否有任何简单的方法可以做到这一点,也许是 tibbletime
包中的一些修改/功能组合 .
任何帮助将受到赞赏 .
先感谢您 .
2 回答
以下是我通常使用
data.table
来解决此问题的方法 - 基础中的cut.Date()
和seq.Date()
函数是逻辑的核心,因此如果需要,您可以使用相同的方法dplyr
.如果你真的想要使用自联接并跳过创建
Test
,你也可以更紧凑地做一些事情 .您可以使用
dplyr
中的summarise
函数返回每个ID
中是否存在大于31的任何日差的逻辑值 . 您可以通过首先仅使用年份和月份构建临时日期并将"-01"附加为假日来执行此操作:Result:
您还可以通过绘制每个
ID
的日期来直观地检查是否存在任何间隙: