我想根据缺少的变量数量来计算数据框的行数。因此,例如在下面的数据框中,我希望代码返回列表:
3, 5, 1, 1, 0
因为有 3 行没有缺失变量,5 行有 1 个缺失变量,1 行有 2 个缺失变量,1 行有 3 个缺失变量,0 行有 4 个缺失变量:
v1 v2 v3 v4
1 1 1 1 1
2 NA NA 1 1
3 1 1 NA 1
4 1 1 1 1
5 NA 1 1 1
6 NA 1 1 1
7 1 1 1 NA
8 NA 1 1 1
9 1 1 1 1
10 1 NA NA NA
以下是可以在 R 中加载的示例数据:
dt <- structure(list(v1 = c(1, NA, 1, 1, NA, NA, 1, NA, 1, 1), v2 = c(1, NA, 1, 1, 1, 1, 1, 1, 1, NA), v3 = c(1, 1, NA, 1, 1, 1, 1, 1, 1, NA), v4 = c(1, 1, 1, 1, 1, 1, NA, 1, 1, NA)), .Names = c("v1", "v2", "v3", "v4"), row.names = c(NA, -10L), class = "data.frame")
我已经可以通过逐行循环数据帧并增加缺失变量数量的计数器来做到这一点,但在大型数据帧上速度非常慢,所以我希望有一种巧妙的方法来做到这一点?
最佳答案
table(rowSums(is.na(dt)))
#0 1 2 3
#3 5 1 1
如果您确实需要最后 0 个(四个 NA
):
tabulate(factor(rowSums(is.na(dt))), nbins = ncol(dt)+1)
#[1] 3 5 1 1 0
关于r - 根据缺失变量的数量对观测值进行计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13316002/