【发布时间】:2016-06-09 00:29:45
【问题描述】:
我有一个数据框,我想过滤掉日期不连续的条目。换句话说,我正在查看连续日期的集群。
a %>% group_by(day) %>% summarise(count = n()) %>% mutate(day_dif = day - lag(day))
来源:本地数据框 [20 x 3]
day count day_dif
(date) (int) (dfft)
1 2016-02-02 12 NA days
2 2016-02-03 80 1 days
3 2016-02-04 102 1 days
4 2016-02-05 97 1 days
5 2016-02-06 118 1 days
6 2016-02-07 115 1 days
7 2016-02-08 4 1 days
8 2016-02-20 13 12 days
9 2016-02-21 136 1 days
10 2016-02-22 114 1 days
11 2016-02-23 134 1 days
12 2016-02-24 126 1 days
13 2016-02-25 128 1 days
14 2016-02-26 63 1 days
15 2016-02-27 118 1 days
16 2016-03-06 1 8 days
17 2016-03-29 28 23 days
18 2016-04-03 18 5 days
19 2016-04-08 18 5 days
20 2016-04-27 23 19 days
在此,我想过滤掉日期不连续的条目。例如,2016-03-06、2016-03-29、2016-04-03 是需要删除的单日条目。我只寻找连续天数的条目。多天出现的条目。我正在寻找的理想输出是,
day count day_dif Cluster
(date) (int) (dfft)
1 2016-02-02 12 NA days 1
2 2016-02-03 80 1 days 1
3 2016-02-04 102 1 days 1
4 2016-02-05 97 1 days 1
5 2016-02-06 118 1 days 1
6 2016-02-07 115 1 days 1
7 2016-02-08 4 1 days 1
8 2016-02-20 13 12 days 2
9 2016-02-21 136 1 days 2
10 2016-02-22 114 1 days 2
11 2016-02-23 134 1 days 2
12 2016-02-24 126 1 days 2
13 2016-02-25 128 1 days 2
14 2016-02-26 63 1 days 2
15 2016-02-27 118 1 days 2
其中 cluster 列指示日期集群,并且输出会删除单个日期。这里集群列中的 1 表示第一组日期,2 表示第二组日期。 If there are more than 3 continuous days, I want to consider as on cluster。
我正在尝试通过使用滞后函数和所有方法来做到这一点。但没有太大的成功。有人可以帮我这样做吗?任何想法将不胜感激。
谢谢
【问题讨论】: