【发布时间】:2017-01-02 23:18:04
【问题描述】:
为清楚起见进行了编辑:
我对 R 很陌生。我有一个数据框,其中包含具有多个所有权开始和结束日期的车辆。我正在寻找在当前所有权后 6 个月内拥有以前所有权的车辆。
vhc_key start_date end_date
1 2006-12-16 2015-10-05
1 2015-11-21 NA
2 2014-01-14 2014-02-14
2 2014-03-14 NA
3 2014-01-14 2014-02-14
3 2015-03-14 NA
结果:
vhc_key start_date end_date
1 2006-12-16 2015-10-05
2 2014-01-14 2014-02-14
TRUE = 车辆 1 和 2,它们之前的结束日期在其最后开始日期的 6 个月内。 FALSE = 车辆 3,其上一个 end_date 2014-02-14 不在其最后一个开始日期 2015-03-14 的 6 个月内。
使用 Dplyr 会是这样,但这似乎不起作用:
df <- df %>%
group_by(vhc_key) %>%
filter(end_date >= max(start_date) - months(6))
任何帮助将不胜感激。
【问题讨论】:
-
你能解释更多吗?如何选择行?我不清楚。
-
您是否在比较每个 vhc_key 的最后一个 end_date?
-
我的目标是为每辆车选择结束日期在每辆车的最大开始日期前 6 个月内的行。 Dplyr 类似于: df % group_by(vhc_key) %>% filter(end_date IS BETWEEN max(start_date) AND max(start_date)-6 个月)
-
您将“vhc_key”的结束日期设为 NA。因此,在这种情况下,我们是采用前一个 end_date 还是通过将 end_date 的每个元素与 start_date 的最大值进行比较,然后仅选择所有比较结果为 TRUE 的 vhc_key
-
如果 end_date 为 NA,我们可以删除这一行,只保留每辆车的最大开始日期前 6 个月内带有 end_date 的 vhc_keys
标签: r