首页 > 解决方案 > 如何简单地计算带有 NAs 的行数 - R

问题描述

我正在尝试计算整个 df 的 NA 的行数,因为我正在计算 NA 的行数占 df 的总行数的百分比。

我已经看过这篇文章:确定带有 NA 的行数,但它只显示特定范围的列。

标签: rdataframerowna

解决方案


tl;dr:行明智,你会想要sum(!complete.cases(DF)),或者,等价地,sum(apply(DF, 1, anyNA))

有许多不同的方法可以查看NA数据框中值的数量、比例或位置:

其中大多数以TRUEfor everyNAFALSE其他任何地方的逻辑数据框开始。对于基础数据集airquality

is.na(airquality)

该数据集中有 44 个NA

sum(is.na(airquality))
# [1] 44

NA您可以查看每行或每列的值总数:

head(rowSums(is.na(airquality)))
# [1] 0 0 0 0 2 1
colSums(is.na(airquality))
#   Ozone Solar.R    Wind    Temp   Month     Day 
 37       7       0       0       0       0 

anyNA()您也可以使用is.na()

# by row
head(apply(airquality, 1, anyNA))
# [1] FALSE FALSE FALSE FALSE  TRUE  TRUE
sum(apply(airquality, 1, anyNA))
# [1] 42


# by column
head(apply(airquality, 2, anyNA))
#   Ozone Solar.R    Wind    Temp   Month     Day 
#    TRUE    TRUE   FALSE   FALSE   FALSE   FALSE
sum(apply(airquality, 2, anyNA))
# [1] 2

complete.cases()可以使用,但只能逐行使用:

sum(!complete.cases(airquality))
# [1] 42

推荐阅读