id <- c(1,1,1,2,3,3,3,4,4,5,5)
val1 <-c(NA,1,2,NA,NA,3,4,4,NA,NA)
dt <- data.frame(id,val1)
dt是我的数据帧,我想输出所有val1为NA的ID。
id val1
1 NA
1 1
1 2
2 NA
3 NA
3 NA
3 3
4 4
4 4
5 NA
5 NA
输出应为
id
2
5
答案 0 :(得分:2)
您可以使用dplry
软件包
library(dplyr)
dt %>%
group_by(id) %>%
filter(all(is.na(val1))) %>%
pull(id) %>%
unique()
输出:
[1] 2 5
答案 1 :(得分:1)
按'id'分组后,filter
行中所有NA
在'val1'中并且select
行在'id'列中
library(dplyr)
dt %>%
group_by(id) %>%
filter(all(is.na(val1))) %>%
select(id) %>%
distinct
# A tibble: 2 x 1
# Groups: id [2]
# id
# <dbl>
#1 2
#2 5
答案 2 :(得分:0)
另一种dplyr
可能性:
dt %>%
group_by(id) %>%
mutate(temp = ifelse(sum(is.na(val1)) == n(), 1, 0)) %>%
filter(temp == 1) %>%
distinct() %>%
select(id)