使用组删除 NA 值
Remove NA values with a group
这是我的例子:
mydf <- data.frame('col_1'=c('A','A','B','B','C','C','D','D'), 'col_2'=c(100,NA,90,30,50,60,10,NA))
col_1 col_2
1 A 100
2 A NA
3 B 90
4 B 30
5 C 50
6 C 60
7 D 10
8 D NA
我想删除按 col_1
分组的 NA 值,以生成以下结果。
col_1 col_2
1 B 90
2 B 30
3 C 50
4 C 60
我该怎么做?
我们可以按 'col_1' 分组,然后 filter
没有 'NA'
的 'col_2'
library(dplyr)
mydf %>%
group_by(col_1) %>%
filter(!any(is.na(col_2)))
或者使用 all
mydf %>%
group_by(col_1) %>%
filter(all(!is.na(col_2)))
或者可以用 base R
来完成
subset(mydf, col_1 %in% names(which(!rowsum(+(is.na(col_2)),
group = col_1)[,1])))
这是我的例子:
mydf <- data.frame('col_1'=c('A','A','B','B','C','C','D','D'), 'col_2'=c(100,NA,90,30,50,60,10,NA))
col_1 col_2
1 A 100
2 A NA
3 B 90
4 B 30
5 C 50
6 C 60
7 D 10
8 D NA
我想删除按 col_1
分组的 NA 值,以生成以下结果。
col_1 col_2
1 B 90
2 B 30
3 C 50
4 C 60
我该怎么做?
我们可以按 'col_1' 分组,然后 filter
没有 'NA'
library(dplyr)
mydf %>%
group_by(col_1) %>%
filter(!any(is.na(col_2)))
或者使用 all
mydf %>%
group_by(col_1) %>%
filter(all(!is.na(col_2)))
或者可以用 base R
subset(mydf, col_1 %in% names(which(!rowsum(+(is.na(col_2)),
group = col_1)[,1])))