【问题标题】:Filtering data in two data frame based on date in R根据R中的日期过滤两个数据框中的数据
【发布时间】:2022-12-21 10:00:33
【问题描述】:

我有两个数据框 A 和 B

我想要帧 B 的一个子集,其中开始数据大于数据帧 A 的结束日期。

理想的结果应该是

不知道如何得到它。

【问题讨论】:

    标签: r dataframe rstudio filtering subset


    【解决方案1】:

    这是使用dplyr 的解决方案。请注意,我使用的日期格式是 MM/DD/YYYY,而您表格中的日期是 DD/MM/YYYY。

    library(dplyr)
    library(lubridate)
    
    df1 <- data.frame(
      Name = c('A', 'B', 'C'),
      Limit = c(100, 200, 300),
      EndDate = lubridate::mdy(c('12-13-2022', '01-30-2023', '02-28-2023'))
    )
    
    
    
    df2 <- data.frame(
      Name = c('A', 'B', 'B', 'C', 'C'),
      Limit = c(50, 150, 10, 250, 50),
      StartDate = lubridate::mdy(c('01-01-2022', '02-01-2022', '03-01-2023', '03-01-2023', '04-01-2023'))
    )
    
    df2 %>% 
      left_join(df1, by = "Name") %>% 
      filter(StartDate > EndDate) %>% 
      select(Name, Limit = Limit.x, StartDate)
    

    这使:

      Name Limit  StartDate
    1    B    10 2023-03-01
    2    C   250 2023-03-01
    3    C    50 2023-04-01
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-21
      • 2016-10-29
      • 1970-01-01
      • 2015-11-06
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多