如何用 NAs - R 简单地计算行数
How to simply count number of rows with NAs - R
我正在尝试计算整个 df 中具有 NA 的行数,因为我希望计算具有 NA 的行占 df 总行数的百分比。
我已经看过这个 post:Determine the number of rows with NAs 但它只显示特定范围的列。
tl;dr:行明智,你会想要 sum(!complete.cases(DF))
,或者,等价地,sum(apply(DF, 1, anyNA))
有许多不同的方法可以查看数据框中 NA
值的数量、比例或位置:
其中大部分以逻辑数据框开始,每个 NA
为 TRUE
,其他地方为 FALSE
。对于基础数据集 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
来自示例here:
DF <- read.table(text=" col1 col2 col3
1 23 17 NA
2 55 NA NA
3 24 12 13
4 34 23 12", header=TRUE)
您可以检查哪些行至少有一个 NA:
(which_nas <- apply(DF, 1, function(X) any(is.na(X))))
# 1 2 3 4
# TRUE TRUE FALSE FALSE
然后对它们进行计数、识别或计算比率:
## Identify them
which(which_nas)
# 1 2
# 1 2
## Count them
length(which(which_nas))
#[1] 2
## Ratio
length(which(which_nas))/nrow(DF)
#[1] 0.5
我正在尝试计算整个 df 中具有 NA 的行数,因为我希望计算具有 NA 的行占 df 总行数的百分比。
我已经看过这个 post:Determine the number of rows with NAs 但它只显示特定范围的列。
tl;dr:行明智,你会想要 sum(!complete.cases(DF))
,或者,等价地,sum(apply(DF, 1, anyNA))
有许多不同的方法可以查看数据框中 NA
值的数量、比例或位置:
其中大部分以逻辑数据框开始,每个 NA
为 TRUE
,其他地方为 FALSE
。对于基础数据集 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
来自示例here:
DF <- read.table(text=" col1 col2 col3
1 23 17 NA
2 55 NA NA
3 24 12 13
4 34 23 12", header=TRUE)
您可以检查哪些行至少有一个 NA:
(which_nas <- apply(DF, 1, function(X) any(is.na(X))))
# 1 2 3 4
# TRUE TRUE FALSE FALSE
然后对它们进行计数、识别或计算比率:
## Identify them
which(which_nas)
# 1 2
# 1 2
## Count them
length(which(which_nas))
#[1] 2
## Ratio
length(which(which_nas))/nrow(DF)
#[1] 0.5