РЕДАКТИРОВАТЬ :
Чтобы получить идентификаторы с NA
с (здесь мы предполагаем, что все NA
не просто какие-либо NA. В последнем случае используйте anyNA
вместо ):
df %>%
group_by(ID) %>%
filter(all(is.na(X4MOS))) %>%
pull(ID)
[1] "123_ABC" "789_GHI"
base
(без группировки):
df[is.na(df["X4MOS"]),"ID"]
[1] "123_ABC" "789_GHI"
ORIGINAL : Возвращает, где все не NA
A dplyr
решение:
df %>%
group_by(ID) %>%
filter(!all(is.na(X4MOS)))
# A tibble: 4 x 4
# Groups: ID [4]
ID Baseline X4MOS X12MOS
<chr> <dbl> <dbl> <dbl>
1 456_DEF 45.1 32.5 12.2
2 923_JKL 88.4 11.1 23.1
3 734_BBB 45.4 20.1 NA
4 343_CHF 22.1 16.1 NA
С base
(без группировки):
df[!is.na(df["X4MOS"]),]
ID Baseline X4MOS X12MOS
2 456_DEF 45.1 32.5 12.2
4 923_JKL 88.4 11.1 23.1
5 734_BBB 45.4 20.1 NA
6 343_CHF 22.1 16.1 NA
Данные:
df <- structure(list(ID = c("123_ABC", "456_DEF", "789_GHI", "923_JKL",
"734_BBB", "343_CHF"), Baseline = c(53.5, 45.1, 45.4, 88.4, 45.4,
22.1), X4MOS = c(NA, 32.5, NA, 11.1, 20.1, 16.1), X12MOS = c(NA,
12.2, NA, 23.1, NA, NA)), class = "data.frame", row.names = c(NA,
-6L))