#r #dplyr
Вопрос:
Как я могу удалить всю группу, если одно из ее значений равно NA
. Например, удалите category
B, потому что он содержит NA
.
library(dplyr)
tbl = tibble(category = c("A", "A", "B", "B"),
values = c(2, 3, 1, NA))
Ответ №1:
Мы можем использовать filter
после группировки по «категории»
library(dplyr)
tbl %>%
group_by(category) %>%
filter(!any(is.na(values))) %>%
ungroup
-выход
# A tibble: 2 x 2
category values
<chr> <dbl>
1 A 2
2 A 3
Ответ №2:
tbl %>%
filter(!category %in% category[is.na(values)])
Выход
category values
<chr> <dbl>
1 A 2
2 A 3
Ответ №3:
tbl %>%
group_by(category) %>%
filter(all(!is.na(values)))
category values
<chr> <dbl>
1 A 2
2 A 3
Ответ №4:
Вы можете получить категории, которые имеют хотя бы одно NA
значение, и исключить их.
subset(tbl, !category %in% unique(category[is.na(values)]))
# category values
# <chr> <dbl>
#1 A 2
#2 A 3
Если вам так больше нравится dplyr::filter
.
library(dplyr)
tbl %>% filter(!category %in% unique(category[is.na(values)]))