[英]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.