保留 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)), ]
假设我们有这个包含六个观察值和四个变量的数据框
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)), ]