【发布时间】:2019-05-05 10:51:50
【问题描述】:
我的数据框是这样的
df <- read.table(text="
id nr date
1 124 1 2017-01-01
2 122 1 2017-01-03
3 124 2 2017-01-04
4 121 1 2017-02-05
5 124 3 2017-02-06
6 124 3 2017-04-06
", header=TRUE)
我必须从我的数据框中删除天数差异小于 30 天的行。我通常使用前导函数来执行此操作,然后计算天数差异,如果它低于限制,则将其删除。
但现在我想删除低于限制的每一行。不仅如此;如果日期之间的日期差异超过 30 天,那么我必须过滤所有低于限制的下一行。
换句话说,有第一行,行号 2 和 3 应该被删除,因为日期差只有几天。第 4 行和第 1 行之间的差异超过 30 天,因此不应删除,第 4 和第 5 行之间的差异小于 30 天,因此删除它,结果中应该存在 6,因为差异超过 30 天,所以开。
【问题讨论】:
-
我不确定为什么对您通常的策略(确保您也保留第一行)进行小幅修改是行不通的。
df %>%mutate(tmp = lag(date)) %>% filter(date - tmp > 30 | date == first(date)) %>% select(-tmp)是否给出了你想要的结果?
标签: r