显示特定列的所有值的id为NA r

时间:2018-10-16 05:23:43

标签: r group-by dplyr lapply

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  

3 个答案:

答案 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)