首页 > 解决方案 > r 使用 NA 过滤日期

问题描述

我正在处理这样的数据集

Id   Col1   Date   FromDate   ToDate     Weight
1    Blue   2018   NA         NA         24.9
2    Green  2018   NA         NA         14.5
3    Red    2010   2009-05-15 2015-09-15 87.5
3    Red    2010   2015-10-15 2020-08-15 43.8
4    Yellow 2020   2019-10-15 2021-05-15 29.5
5    Purple 2011   NA         NA         NA

根据逻辑,预期的数据集将是这样的

Id   Col1   Date   FromDate   ToDate     Weight
1    Blue   2018   NA         NA         24.9
2    Green  2018   NA         NA         14.5
3    Red    2010   2009-05-15 2015-09-15 87.5

4    Yellow 2020   2019-10-15 2021-05-15 29.5
5    Purple 2011   NA         NA         NA

我知道我可以使用该filter功能,但我不确定如何使其与未排除的 NA 值一起使用。任何建议都非常感谢。

标签: rdatetimedplyrfilter

解决方案


你应该可以这样做:

df <- tribble(
  ~Date, ~From, ~To,
  2018, NA, NA,
  2010, "2009-05-09", "2015-09-15"
)

df %>% filter(
  # Condition 1
  (is.na(From) & is.na(To)) | 
    # Condition 2
    ((Date > year(From))) & 
       (Date < year(To))))
  )

推荐阅读