【发布时间】:2019-04-16 19:31:37
【问题描述】:
问题陈述
现有包中是否有一个函数可以相对容易地给出数据框每一列的缺失元素数(即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包,它具有很好的缺失处理功能。
标签: r dataframe missing-data