【问题标题】:How to deduplicate based upon an interval between dates in same column如何根据同一列中日期之间的间隔进行重复数据删除
【发布时间】:2019-09-18 19:42:26
【问题描述】:

我有一个看起来像这样的表:

ID     Date          Type
1      2019/03/12      A
1      2019/03/12      A
2      2019/01/07      A
2      2019/04/20      B
3      2019/02/09      C
4      2019/01/19      A
4      2019/01/23      A  

我想按 ID 对该表进行重复数据删除,但前提是列出的日期之间的跨度大于 7 天。如果少于 7 天,那么我想保留最早的日期。

想要:

ID     Date          Type
1      2019/03/12      A
2      2019/01/07      A
2      2019/04/20      B
3      2019/02/09      C
4      2019/01/19      A

我只是在为从概念上的开始而苦苦挣扎。

【问题讨论】:

    标签: r date duplicates


    【解决方案1】:

    一种选择是将“日期”转换为Date 类(此处使用来自lubridateymd),然后按“ID”分组,filter“日期”的difference大于等于 7

    library(dplyr)
    library(lubridate)
    df1 %>%
      mutate(Date = ymd(Date)) %>%
      group_by(ID)  %>% 
      filter(c(TRUE, diff(Date) >= 7))
    # A tibble: 5 x 3
    # Groups:   ID [4]
    #     ID Date       Type 
    #  <int> <date>     <chr>
    #1     1 2019-03-12 A    
    #2     2 2019-01-07 A    
    #3     2 2019-04-20 B    
    #4     3 2019-02-09 C    
    #5     4 2019-01-19 A    
    
    数据
    df1 <- structure(list(ID = c(1L, 1L, 2L, 2L, 3L, 4L, 4L), Date = c("2019/03/12", 
    "2019/03/12", "2019/01/07", "2019/04/20", "2019/02/09", "2019/01/19", 
    "2019/01/23"), Type = c("A", "A", "A", "B", "C", "A", "A")), 
      class = "data.frame", row.names = c(NA, 
    -7L))
    

    【讨论】:

      猜你喜欢
      • 2021-12-15
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2021-10-23
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多