有一个患者的体检表,列名分别为患者ID,怎样用R从重复患者里面筛选缺失值最少的行或者没有缺失值的行

有一个患者的体检表,列名分别为患者ID,身高,体重,收缩压,舒张压,脉搏,但是有很多重复的患者,也有一些缺失值,怎样用R从重复患者里面筛选缺失值最少的行或者没有缺失值的行。

假设patient_data为体检表

library(dplyr)

# 筛选出重复患者
duplicated_patients <- patient_data %>% 
  group_by(patient_id) %>% 
  filter(n() > 1)

# 选择缺失值最少的行
least_missing <- duplicated_patients %>% 
  arrange(across(everything(), ~sum(!is.na(.)))) %>% 
  slice(1)

# 选择没有缺失值的行
no_missing <- duplicated_patients %>% 
  filter(rowSums(is.na(.)) == 0) %>% 
  slice(1)

# 合并
merged <- bind_rows(least_missing, no_missing)