我有一个包含两个日期列的数据集。第一个是执行测试的日期(日期1)。第二列是执行附加测试(日期2)的日期。如果日期2不在日期1的正负3天之内,我想消除观察。
ID <- c(1,2,3,4)
Date1 <- c("2016-07-01", "2016-07-02", "2016-07-03","2017-08-01")
Date2 <- c("2016-07-02", "2016-07-03", "2016-07-04","2017-08-15")
df = data.frame(ID, Date1, Date2)
ID Date1 Date2
1 2016-07-01 2016-07-02
2 2016-07-02 2016-07-03
3 2016-07-03 2016-07-04
4 2017-08-01 2017-08-15
答案 0 :(得分:0)
我们可以做这样的事情
library(lubridate)
library(dplyr)
df %>%
mutate_at(vars(starts_with("Date")), ymd) %>%
filter(Date2 <= Date1 %m+% days(3) & Date2 >= Date1 %m-% days(3))
# ID Date1 Date2
#1 1 2016-07-01 2016-07-02
#2 2 2016-07-02 2016-07-03
#3 3 2016-07-03 2016-07-04
答案 1 :(得分:0)
使用abs
df[abs(as.Date(df$Date1)-as.Date(df$Date2))<3,]
ID Date1 Date2
1 1 2016-07-01 2016-07-02
2 2 2016-07-02 2016-07-03
3 3 2016-07-03 2016-07-04