我使用数据集“ airquality”中的一个简单示例。
前四行是完整的,只需用complete.cases即可检查
第5行包含缺失值。 第6行还包含缺失值。
可以通过以下方法快速检查:
is.na(airquality[5,])
is.na(airquality[6,])
我希望which(is.na(airquality))
会给我包含至少一个真实语句(即至少一个NA
值)的行号列表。
但是,它列出了5、10、25 ...,即未列出第6行。为什么?在第6行中有一个NA
值!
library(datasets)
complete.cases(airquality)
is.na(airquality[5,])
is.na(airquality[6,])
which(is.na(airquality))
这里显然有一些我不理解的地方。非常感谢您的帮助。
答案 0 :(得分:2)
来自# get the cases with missingness
which(!complete.cases(airquality))
[1] 5 6 10 11 25 26 27 32 33 34 35 36 37 39 42 43 45 46 52
[20] 53 54 55 56 57 58 59 60 61 65 72 75 83 84 96 97 98 102 103
[39] 107 115 119 150
# and check against is.na
unique(sort(which(is.na(airquality), arr.ind = TRUE)[ , 1]))
[1] 5 6 10 11 25 26 27 32 33 34 35 36 37 39 42 43 45 46 52
[20] 53 54 55 56 57 58 59 60 61 65 72 75 83 84 96 97 98 102 103
[39] 107 115 119 150
all.equal(which(!complete.cases(airquality)),
unique(sort(which(is.na(airquality), arr.ind = TRUE)[ , 1])))
TRUE
:
is.na的数据帧方法返回具有相同逻辑矩阵 尺寸作为数据框,并从行和 数据框的列名称。
换句话说,它不是在向您提供假设的信息。通过计数向下的列,它为您提供了上述矩阵的元素。试试
{{1}}