首页 > 解决方案 > R - 根据另一个数据帧中的日期和其他值从一个数据帧中减去行

问题描述

我想根据数据框的 Month 列和 Park 列(也在下方)从 reports_example 数据框(见下文)中删除一些行AC_example。我希望 reports_example 数据框的第一个月要么相同,要么在AC_example数据框之后。

以下是所讨论的两个数据帧的子集:

reports_example <- read.table(header=TRUE, text="
  Month        Park
  2019-12-01   Aspen_Heights
  2020-02-01   Aspen_Heights
  2020-05-01   Aspen_Heights
  2021-06-01   Aspen_Heights
  2019-11-01   Auburn_Bay
  2020-03-01   Auburn_Bay
")

AC_example <- read.table(header=TRUE, text="
  Month        Park
  2020-05-01   Aspen_Heights
  2020-06-01   Aspen_Heights
  2020-07-01   Aspen_Heights
  2021-04-01   Aspen_Heights
  2020-03-01   Auburn_Bay
  2021-03-01   Auburn_Bay
")

我希望最终的报告数据框看起来像这样:

reports_final_example <- read.table(header=TRUE, text="
  Month        Park
  2020-05-01   Aspen_Heights
  2021-06-01   Aspen_Heights
  2020-03-01   Auburn_Bay
")

任何帮助,将不胜感激!

标签: r

解决方案


使用tidyverse

reports_example %>% 
mutate(Month_example = as.Date(Month)) %>% 
left_join(AC_example %>% mutate(Month_AC = as.Date(Month)), by = 'Park') %>% 
filter(Month_example >= Month_AC) %>% 
select(Park, Month_example, Month_AC) %>% 
distinct(Park, Month_example)

结果是:

           Park Month_example
1 Aspen_Heights    2020-05-01
2 Aspen_Heights    2021-06-01
3    Auburn_Bay    2020-03-01

推荐阅读