[英]How to filter out groups empty for 1 column in Tidyverse
tibble(
A = c("A","A","B","B"),
x = c(NA,NA,NA,1),
y = c(1,2,3,4),
) %>% group_by(A) -> df
所需 output:
tibble(
A = c("B","B"),
x = c(NA,1)
y = c(3,4),
)
我想找到所有x
和x
的所有元素都是NA
的组,然后删除这些组。 "B"
被过滤掉,因为它至少有 1 个非NA
元素。
我试过了:
df %>%
filter(all(!is.na(x)))
但如果它发现至少 1 个 NA,它似乎会被过滤掉; 我需要正确的词,不是all
。
如果x
的所有元素都是NA
,这将删除列A
组:
library(dplyr)
df %>%
group_by(A) %>%
filter(! all(is.na(x)))
# A tibble: 2 × 3
# Groups: A [1]
# A x y
# <chr> <dbl> <dbl>
#1 B NA 3
#2 B 1 4
请注意,组"A"
已被删除,因为x
列中的两个单元格均未定义。
我们可以使用any
with complete.cases
library(dplyr)
df %>%
group_by(A) %>%
filter(any(complete.cases(x))) %>%
ungroup
-输出
# A tibble: 2 × 3
A x y
<chr> <dbl> <dbl>
1 B NA 3
2 B 1 4
在dplyr
的devel
版本中,我们可以在filter
中使用.by
因此我们不需要group_by/ungroup
df %>%
filter(any(complete.cases(x)), .by = 'A')
# A tibble: 2 × 3
A x y
<chr> <dbl> <dbl>
1 B NA 3
2 B 1 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.