Suppose you have a tibble
:
library(tidyverse)
x <- tibble(
name = c("alice", "bob", "mary", "mary", "alice", "alice"),
colour = c(NA, "green", "orange", "orange", NA, NA)
) %>%
group_by(name)
# A tibble: 6 x 2
# Groups: name [3]
name colour
<chr> <chr>
1 alice NA
2 bob green
3 mary orange
4 mary orange
5 alice NA
6 alice NA
How can you group by name and only return 1 name if all colours within a group are NA?
Expected output:
# A tibble: 4 x 2
name colour
<chr> <chr>
1 alice NA
2 bob green
3 mary orange
4 mary orange
You can use all
inside filter to check if all colours are NA
x %>%
filter(!(all(is.na(colour)) & 1:n() != 1))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With