R中同时具有整数和NA的过滤元素

Filter elements with both integer and NA in R

我对R比较陌生,有一个简单的问题。 我有如下 df。

df <- data.frame(T = c('A','A','B','B','C','D'), P = c(10, NA, 22, NA,33,NA))

经过一些过滤过程后,我只想查看 P 列中同时具有整数和 NA 的元素:在这种情况下,只剩下 A 和 B。

得到这个的最好方法是什么?

在此先感谢您的帮助!

我们可以在 filter 中使用条件在分组后同时具有 NA 和 non-NA - is.na returns TRUE for NA, ! 转换 TRUE -> FALSE 反之亦然。逻辑向量的sum得到计数,然后将其转化为逻辑向量(> 0 - NA大于0的计数,non-NA大于0的计数)

library(dplyr)
df %>%
   group_by(T) %>% 
   filter(sum(is.na(P)) > 0, sum(!is.na(P)) > 0) %>%
   ungroup

-输出

# A tibble: 4 × 2
  T         P
  <chr> <dbl>
1 A        10
2 A        NA
3 B        22
4 B        NA