在具有 NA 的列中过滤具有最大值的重复行

filtering duplicated rows with maximum values in a column with NAs

我有一个看起来像这样的数据框:

studentID Enrollment_date (class=Date)
56783536 2019-02-01
56783536 2019-02-12
56783406 NA
56783406 NA
56783522 2019-03-02
56783522 NA
56783599 NA
56783599 NA

我正在尝试筛选行,以便 1) 保留具有最大日期的行,2) 当两个注册日期均为 NA 时保留两个重复的行,以及 3) 当一个日期为 NA 而另一个日期为 NA 时',保留没有 NA 的那一行。所以它应该输出这个:

studentID Enrollment_date (class=Date)
56783536 2019-02-12
56783406 NA
56783406 NA
56783522 2019-03-02
56783599 NA
56783599 NA

我试过这个:

dup2_ENROLL_2020 <- dup_ENROLL_2020 %>%
  group_by(studentID) %>%
  filter(Enrollment_date==max(Enrollment_date))

还有这个:

dup2_ENROLL_2020 <- dup_ENROLL_2020 %>%
  group_by(studentID) %>%
  slice(which.max(Enrollment_date))

其中包含 !is.na() 和 na.omit() 的一系列变体。 None 他们成功了,有人帮助我(抱歉新手问题)

试试这个:

dat %>%
  group_by(studentID) %>%
  filter(if (all(is.na(Enrollment_date))) TRUE else Enrollment_date == max(Enrollment_date, na.rm = TRUE)) %>%
  ungroup()
# # A tibble: 6 x 2
#   studentID Enrollment_date
#       <int> <date>         
# 1  56783536 2019-02-12     
# 2  56783406 NA             
# 3  56783406 NA             
# 4  56783522 2019-03-02     
# 5  56783599 NA             
# 6  56783599 NA