R上Na值(数据框和变量)的百分比

fbcarpbf  于 2023-06-19  发布在  其他
关注(0)|答案(2)|浏览(141)

我想计算NA值在 Dataframe 和变量中的百分比。
我的dataframe有这个:

mean(is.na(dataframe))
# 0.03354

我如何解读这个结果?Na 0.033%?我不明白。
对于单个变量,我对NA s的计数执行了以下操作

sapply(DATAFRAME, function(x) sum(is.na(x)))

然后,对于NA值的百分比:

colMeans(is.na(VARIABLEX))

不起作用,因为我得到了以下错误:
“x必须是至少二维的数组”
为什么会出现此错误?总之,后来我尝试了以下几点:

mean(is.na(VariableX))
# 0.1188

我应该将其解释为具有0.11% NA-值吗?

k10s72fa

k10s72fa1#

我只需要将包含NA的行数除以总行数:

df <- data.frame(data = c(NA, NA, NA, NA, 2, 4, NA, 7, NA))

percent_NA <- NROW(df[is.na(df$data),])/NROW(df)

其给出:

> percent_NA
[1] 0.6666667

也就是说我的数据框里有66.67%的NA

sq1bmfud

sq1bmfud2#

我不明白你想解决的问题。一切都如预期的那样工作。
首先是一个数据集,因为您还没有提供数据集。

set.seed(6180)  # make it reproducible
dat <- data.frame(x = sample(c(1:4, NA), 100, TRUE),
                  y = sample(c(1:5, NA), 100, TRUE))

现在是求和的代码。

s <- sapply(dat, function(x) sum(is.na(x)))
s
# x  y 
#18 13
sum(s)
#[1] 31
sum(is.na(dat))
#[1] 31

colSums(is.na(dat))
# x  y 
#18 13

这也适用于平均值,无论是mean还是colMeans

编辑

下面是获取每列/变量NA值的平均值和总计的代码。

sapply(dat, function(x) mean(is.na(x)))
#   x    y 
#0.18 0.13
colMeans(is.na(dat))   # Same result, faster
#   x    y 
#0.18 0.13
mean(is.na(dat))       # overall mean
#[1] 0.155

相关问题