r - 现有功能可查找缺失和完整案例的数量

标签 r dataframe missing-data

问题陈述

现有包中是否有一个函数可以相对轻松地给出数据框每列的缺失元素数量(即 NA's)和完整元素数量?

我可以用下面提到的方法解决这个问题,但是我想知道是否有一个包可以为我做到这一点(主要是为了方便每次执行数据分析时不重复此代码)。

当前解决方案 1

我可以使用我编写的以下函数找到此信息

# Find number of missing elements
missing.total = function(df){
  sum(is.na(df))
}

# Find number of complete elements
complete.total = function(df){
  sum(!is.na(df))
}

# Find number of complete and missing elements for each variable in a data frame
var.complete.info = function(df){
  result = cbind( apply(df, 2, complete.total),
                  apply(df, 2, missing.total) )

  colnames(result) = c("Complete", "Missing")

  return(result)
}

我们可以在以下示例中应用此函数:

set.seed(1)

n.col = 5
n.row = 100
sample.set = c(0:9, NA)

# Create sample data frame with missing and complete
sample.df = data.frame(replicate(n.col,sample(sample.set,n.row,rep=TRUE)))

> var.complete.info(sample.df)
   Complete Missing
X1       95       5
X2       92       8
X3       89      11
X4       88      12
X5       86      14

当前解决方案 2

另一种选择是使用 skimr 库中的 skim() 函数,但这提供了太多信息:

library(skimr)

# Using sample.df as defined above in solution 1

# Gives more information than necessary
> skim(sample.df)
Skim summary statistics
 n obs: 100 
 n variables: 5 

── Variable type:integer ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
 variable missing complete   n mean   sd p0  p25 p50 p75 p100     hist
       X1       5       95 100 4.96 2.79  0 3      5   7    9 ▅▃▃▅▃▂▅▇
       X2       8       92 100 4.75 2.72  0 2.75   5   7    9 ▆▃▅▅▃▆▃▇
       X3      11       89 100 3.57 2.51  0 1      3   5    9 ▇▃▃▃▃▂▂▂
       X4      12       88 100 4.3  2.78  0 2      4   7    9 ▇▃▅▅▅▂▃▆
       X5      14       86 100 4.26 2.9   0 1.25   4   7    9 ▇▂▂▅▅▂▃▅ 

理想的解决方案

我正在寻找一个现有的包来为我完成这项工作,因此我希望找到一个允许我编写如下代码的包:

library(Package_I_am_not_aware_of)

existing.function(data_frame)

最佳答案

也许VIM::aggr()会适合你。

library(VIM)
summary(aggr(d, plot=FALSE))
# Missings per variable: 
#   Variable Count
# X1     7
# X2     9
# X3    10
# X4    14
# 
# Missings in combinations of variables: 
#   Combinations Count   Percent
# 0:0:0:0     5 16.666667
# 0:0:0:1     3 10.000000
# 0:0:1:0     3 10.000000
# 0:0:1:1     3 10.000000
# 0:1:0:0     4 13.333333
# 0:1:0:1     3 10.000000
# 0:1:1:0     1  3.333333
# 0:1:1:1     1  3.333333
# 1:0:0:0     2  6.666667
# 1:0:0:1     3 10.000000
# 1:0:1:0     1  3.333333
# 1:0:1:1     1  3.333333

要获取顶部部分,您可以提取保存在 data.frame 中的值。

out <- summary(aggr(d, plot=FALSE))
out$missings
#    Variable Count
# X1       X1     7
# X2       X2     9
# X3       X3    10
# X4       X4    14

数据

d <- structure(list(X1 = c(NA, 2L, 3L, 4L, 5L, 6L, 7L, NA, 9L, 10L, 
11L, 12L, NA, NA, 15L, NA, 17L, NA, 19L, 20L, 21L, 22L, 23L, 
24L, 25L, 26L, 27L, NA, 29L, 30L), X2 = c(31L, 32L, 33L, NA, 
NA, 36L, NA, 38L, 39L, 40L, 41L, NA, 43L, 44L, 45L, 46L, 47L, 
48L, NA, NA, NA, 52L, 53L, 54L, 55L, 56L, NA, 58L, 59L, NA), 
    X3 = c(61L, 62L, 63L, 64L, 65L, 66L, NA, 68L, 69L, 70L, NA, 
    72L, NA, NA, NA, 76L, NA, 78L, NA, 80L, 81L, 82L, 83L, NA, 
    NA, NA, 87L, 88L, 89L, 90L), X4 = c(NA, NA, 93L, 94L, 95L, 
    96L, NA, NA, NA, 100L, NA, NA, 103L, NA, 105L, NA, 107L, 
    108L, 109L, NA, NA, NA, 113L, 114L, NA, NA, 117L, 118L, 119L, 
    120L)), class = "data.frame", row.names = c(NA, -30L))

关于r - 现有功能可查找缺失和完整案例的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55715422/

相关文章:

r - 绘图窗口在最小化时消失

python - 如何在给定的 pd.DatetimeIndex 中仅选择每月的最后 n 天

删除R中一组内所有零值的行

使用 R 中的 mouse 包进行多重插补的残差图

R:从数据中获取符合条件的行?

css - R markdown ioslides - 使用 CSS 更改 kable 字体大小

r - 群集功能(kmeans,pam,clara)中的NA。如何将群集与原始数据关联?

r - 如何处理 R 中的多种缺失?

mysql - 数据仓库 - 如何使用 R 和/或 SQL 创建与所有维度相交的事实表

python - 同时将 Pandas 函数应用于行和列以进行置信区间计算