首页 > 解决方案 > 提取具有缺失值阈值的变量名称

问题描述

我正在处理一个包含 93 列的数据集,其中许多列有很大比例的缺失值。我正在寻找一种方法来简化筛选每一列的缺失值百分比,然后返回高于该阈值的这些变量的名称列表以包含在新数据集中。

我有一个函数来检查缺失值并返回缺失的百分比:

#check for missing data
pMiss <- function(x) {
  sum(is.na(x))/length(x)*100
}

#percent of data missing per column
x <- apply(dt2,2,pMiss)

如何检索缺失值百分比小于 20% 的列的所有名称 [from x]?我想将这些名称检索为可以粘贴到新数据集中的列表,因此我不必手动复制和粘贴 x.xml 中的每个名称。

先感谢您。

标签: rfunctionmissing-data

解决方案


您可以使用以下tidyverse方法:

require(tidyverse)
set.seed(123)
dat <- data.frame(a=sample(c(1,2,NA), size=20, replace=TRUE), 
                  b=sample(c(1,2,NA), size=20, replace=TRUE), 
                  c=sample(c(1:10,NA), size=20, replace=TRUE))

threshold <- .43 

dat %>% 
  gather(var, value) %>% 
  group_by(var) %>% 
  summarise(prep.missing = sum(is.na(value)) / n()) %>% 
  filter(prep.missing < threshold)

  var   prep.missing
  <chr>        <dbl>
1 a            0.400
2 c            0. 

推荐阅读