通过重复测量删除一列中变量中至少有一个 NA 值的所有个体

Remove all individuals in a column that have at least one NA value in variables with repeated measurements

我是 R 的新手,我想寻求一些帮助。

我有一个具有以下结构的数据框:

DF <- data.frame(patient = c(1, 1, 2, 2, 3, 3), treatment = c("baseline", "on-treatment", "baseline", "on-treatment", "baseline", "on-treatment"), cholesterol_value = c(300, 100, 255, NA, 270, 150))

患者 2 有基线胆固醇值,但没有治疗中胆固醇值。

我想找到一种方法来删除 for 循环中与患者 2 对应的所有值,只保留与患者 1 和 3 对应的值。

谁能帮帮我?

谢谢!

library(tidyverse)

DF %>%
  group_by(patient) %>%
  filter(!any(is.na(cholesterol_value)))

使用base R

subset(DF, !patient %in% unique(patient[is.na(cholesterol_value)]))

这是另一个使用 ´aveinsubset`

的基本 R 选项
subset(
  DF,
  !ave(is.na(cholesterol_value), patient, FUN = any)
)

这给出了

  patient    treatment cholesterol_value
1       1     baseline               300
2       1 on-treatment               100
5       3     baseline               270
6       3 on-treatment               150