删除具有特定 NA 列的行
Remove rows with specific NA column
我有以下数据集,其中一些条目(唯一的 A)在 B 中没有数据,而其他条目有时有。
A B
1 NA
2 NA
3 77
1 NA
2 81
我想删除总是有 NA 的条目并保留其余
A B
2 NA
3 77
2 81
假设最后的注释中显示的输入可重复显示,对于由 A
定义的每个组,如果 B
中的任何元素不是 [=14],我们 return TRUE =].
subset(DF, ave(!is.na(B), A, FUN = any))
备注
Lines <- "
A B
1 NA
2 NA
3 77
1 NA
2 81"
DF <- read.table(text = Lines, header = TRUE)
我们可以使用 ave
按 A
分组并删除具有 all
NA
s
的组
df[!with(df, ave(is.na(B), A, FUN = all)), ]
# A B
#2 2 NA
#3 3 77
#5 2 81
使用与 dplyr
相同的逻辑
library(dplyr)
df %>%
group_by(A) %>%
filter(!all(is.na(B)))
我们可以使用data.table
library(data.table)
setDT(df1)[, .SD[any(!is.na(B))], A]
# A B
#1: 2 NA
#2: 2 81
#3: 3 77
数据
df1 <- structure(list(A = c(1L, 2L, 3L, 1L, 2L), B = c(NA, NA, 77L,
NA, 81L)), class = "data.frame", row.names = c(NA, -5L))
我有以下数据集,其中一些条目(唯一的 A)在 B 中没有数据,而其他条目有时有。
A B
1 NA
2 NA
3 77
1 NA
2 81
我想删除总是有 NA 的条目并保留其余
A B
2 NA
3 77
2 81
假设最后的注释中显示的输入可重复显示,对于由 A
定义的每个组,如果 B
中的任何元素不是 [=14],我们 return TRUE =].
subset(DF, ave(!is.na(B), A, FUN = any))
备注
Lines <- "
A B
1 NA
2 NA
3 77
1 NA
2 81"
DF <- read.table(text = Lines, header = TRUE)
我们可以使用 ave
按 A
分组并删除具有 all
NA
s
df[!with(df, ave(is.na(B), A, FUN = all)), ]
# A B
#2 2 NA
#3 3 77
#5 2 81
使用与 dplyr
library(dplyr)
df %>%
group_by(A) %>%
filter(!all(is.na(B)))
我们可以使用data.table
library(data.table)
setDT(df1)[, .SD[any(!is.na(B))], A]
# A B
#1: 2 NA
#2: 2 81
#3: 3 77
数据
df1 <- structure(list(A = c(1L, 2L, 3L, 1L, 2L), B = c(NA, NA, 77L,
NA, 81L)), class = "data.frame", row.names = c(NA, -5L))