@ RonakShah уже указал (используя base-R
), как filter
вывести строки для Name
, которые получили не менее 1 NA
в Value
или Value1
столбцах.
Но, возможно, OP ищет только unique
имен вместо полного подмножества строк.В dplyr
это можно сделать следующим образом:
library(dplyr)
df %>% group_by(Name) %>%
filter_at(vars(starts_with("Value")), any_vars(is.na(.))) %>% #Either Value or Value1
select(Name) %>% distinct()
# Name
# <chr>
# 1 A
# 2 B
Чтобы получить полные строки для Name
с NA
в Value
или Value1
df %>% group_by(Name) %>%
filter(any(is.na(Value) | any(is.na(Value1))))
# Name Value Value1 C1 C2 C3
# <chr> <int> <int> <lgl> <int> <lgl>
# 1 A 1 2 NA NA NA
# 2 A NA 2 NA 2 NA
# 3 A 1 2 NA 2 NA
# 4 A 1 2 NA 2 NA
# 5 A 1 2 NA 2 NA
# 6 B NA 1 NA 2 NA
# 7 B NA 2 NA 2 NA
# 8 B 1 NA NA 2 NA
# 9 B 1 NA NA 2 NA
Данные:
df <- read.table(text =
"Name Value Value1 C1 C2 C3
A 1 2 NA NA NA
A NA 2 NA 2 NA
A 1 2 NA 2 NA
A 1 2 NA 2 NA
A 1 2 NA 2 NA
B NA 1 NA 2 NA
B NA 2 NA 2 NA
B 1 NA NA 2 NA
B 1 NA NA 2 NA
C 1 5 NA 2 NA
C 1 5 NA 2 NA",
header = TRUE, stringsAsFactors = FALSE)