【发布时间】:2018-07-15 16:57:10
【问题描述】:
我的数据框是这样的
df <- read.table(text="
id date paid_at binded_at
1 107 2016-12-16 2017-06-02 2017-06-07
2 107 2017-11-27 2017-06-02 2017-06-07
3 107 2017-11-28 2017-06-02 2017-06-07
4 109 2016-11-28 2017-01-01 2017-06-07
5 109 2017-11-29 2017-01-01 2017-06-07
6 110 2017-12-04 2018-01-01 2017-06-07", header=TRUE)
目标是为每个 id 比较paid_at 和日期列,并仅过滤比paid_at 之间最接近的日期。例如 id 107 它是在 2017 年 6 月 2 日支付的,并且由于此后最近的日期是 2017 年 11 月 27 日,因此应过滤第二行。 id 109 相同,2017-01-01 之后的最近日期是 2017-11-29,所以过滤它。对我来说问题是 id 110 之类的情况,因为实际上在 2018-01-01 之后没有日期,因为这应该被过滤到第 6 行。结果应该是
result <- read.table(text="
id date paid_at binded_at
1 107 2017-11-27 2017-06-02 2017-06-07
2 109 2017-11-29 2017-01-01 2017-06-07
3 110 2017-12-04 2018-01-01 2017-06-07", header=TRUE)
我创建了这段代码:
result <- df %>%
group_by(id) %>%
filter(paid_at > date)
【问题讨论】:
-
您的
read.table命令不起作用,建议您删除<type>行。