首页 > 解决方案 > 识别具有最少缺失值的变量

问题描述

我有一个由 339 个可能的自变量和 7700 个观察值组成的数据集。我使用了 Amelia 包(我在 R 中编程)来可视化我的数据的缺失值,这就是我得到的。

缺失值与观测值图

我希望为我的回归选择我用棕色矩形表示的变量。但由于我有 339 个变量,x 轴上的标签是不可读的,我不知道哪些是这些变量。我已经尝试过 x.cex=0.1 和 x.cex=0.01 但标签变得太小而无法阅读。我的问题是如何识别棕色矩形中的变量?

标签: rmissing-data

解决方案


这是一种方法:

data <- as.data.frame(setNames(replicate(10,sample(c(1,NA),1000,replace=TRUE),simplify = FALSE),LETTERS[1:10]))
head(data)
#    A  B  C  D  E  F  G  H  I  J
# 1 NA NA NA  1  1 NA NA  1  1  1
# 2  1  1 NA  1  1 NA  1 NA  1 NA
# 3  1  1 NA  1  1 NA  1  1 NA  1
# 4 NA  1  1 NA  1  1  1  1 NA NA
# 5  1 NA NA NA NA  1 NA  1 NA NA
# 6  1  1  1 NA NA  1 NA NA  1  1

x <- stack(sapply(data,function(x) sum(is.na(x))))
head(x[order(x$values),])
#    values ind
# 7     476   G
# 3     478   C
# 8     481   H
# 10    489   J
# 4     499   D
# 2     500   B

那将tidyverse是:

library(tidyverse)
data %>%
  gather %>%
  group_by(key) %>%
  summarize(NAs = sum(is.na(value))) %>%
  arrange(NAs) %>%
  head
# # A tibble: 6 x 2
#   key     NAs
#   <chr> <int>
# 1 G       476
# 2 C       478
# 3 H       481
# 4 J       489
# 5 D       499
# 6 B       500

推荐阅读