保留 NA <= 总变量的 20% 的观测值

Retain observations whose NA is <= 20% of total variables

假设我们有这个包含六个观察值和四个变量的数据框

df <- data.frame(a = c(1, NA, NA, 4, NA, 5),
                 b = c(NA, NA, NA, NA, NA, 1),
                 c = c(1, 2, 3, 4, NA, 6),
                 d = c(6, 7, NA, NA, 4, 4))
a b c d
1 NA 1 6
NA NA 2 7
NA NA 3 NA
4 NA 4 NA
NA NA NA 4
5 1 6 4

我们如何保留 NA 不超过变量 50% 的观测值? (在这种情况下,剩下的每个观察值最多有两个 NA;因此只会保留 4 个观察值。)

您使用 rowSums() 计算每行中的 NA。然后丢弃行中 NA 超过 threshold*ncol(df) 的行。

threshold <- 0.5

df <- df[-which(rowSums(is.na(df)) > threshold*ncol(df)), ]