我是 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 对应的值。
有人可以帮我吗?
谢谢!
答案 0 :(得分:2)
library(tidyverse)
DF %>%
group_by(patient) %>%
filter(!any(is.na(cholesterol_value)))
答案 1 :(得分:1)
使用 base R
subset(DF, !patient %in% unique(patient[is.na(cholesterol_value)]))
答案 2 :(得分:1)
这是另一个使用 ´avein
subset` 的基本 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