【问题标题】:I am looking to eliminate observations if they are not within a certain date range from a neighboring column如果观察结果不在相邻列的某个日期范围内,我希望消除观察结果
【发布时间】:2019-02-19 01:32:23
【问题描述】:

我有一个包含两个日期列的数据集。第一个是执行测试的日期(日期 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

【问题讨论】:

    标签: r date datetime


    【解决方案1】:

    我们可以这样做

    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
    

    【讨论】:

    • 工作完美!谢谢!
    【解决方案2】:

    处理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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-07-12
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      相关资源
      最近更新 更多