如果存在不止一个感兴趣的变量,则子集行是否存在NA?

时间:2019-01-28 16:44:34

标签: r dplyr subset

   Indicator Name Examine
1           Alpha      NA
2            Beta    2013
3            Beta    2017
4            Beta      NA
5         Charlie    2013
6         Charlie    2017
7         Charlie      NA
8           Delta    2016
9            Echo    2016
10           <NA>      NA
11           <NA>      NA
12        Foxtrot    2007
13        Foxtrot      NA

在这里,如果NA有多个条目,则我要删除Examine中存在Indicator Name的行,{{ 1}}。

因此,第4、7和13行将被删除。

样本df:

NA

1 个答案:

答案 0 :(得分:3)

按“指标名称”分组后,在filter中创建一个条件,以删除NA元素或保留all元素为NA的条件

library(dplyr)
df %>% 
   group_by(`Indicator Name`) %>%
   filter(!is.na(Examine)| all(is.na(Examine)))

或者在base R

中使用相同的逻辑
df[with(df, ave(is.na(Examine), `Indicator Name`, FUN = function(x) !x|all(x))),]