Zac*_*ach 72 r missing-data dataframe
这是我编写的一小段代码,用于报告数据框中缺少值的变量.我正在尝试一种更优雅的方式来做这个,也许会返回一个data.frame,但是我被困住了:
for (Var in names(airquality)) {
missing <- sum(is.na(airquality[,Var]))
if (missing > 0) {
print(c(Var,missing))
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我正在处理包含数十到数百个变量的data.frames,因此我们只报告缺少值的变量是关键.
Jos*_*ich 143
只是用 sapply
> sapply(airquality, function(x) sum(is.na(x)))
Ozone Solar.R Wind Temp Month Day
37 7 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
您也可以使用apply
或colSums
创建的矩阵is.na()
> apply(is.na(airquality),2,sum)
Ozone Solar.R Wind Temp Month Day
37 7 0 0 0 0
> colSums(is.na(airquality))
Ozone Solar.R Wind Temp Month Day
37 7 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我们可以使用map_df
purrr.
library(mice)
library(purrr)
# map_df with purrr
map_df(airquality, function(x) sum(is.na(x)))
# A tibble: 1 × 6
# Ozone Solar.R Wind Temp Month Day
# <int> <int> <int> <int> <int> <int>
# 1 37 7 0 0 0 0
Run Code Online (Sandbox Code Playgroud)
我最喜欢(不太宽的)数据的是出色的naniar软件包中的方法。不仅您获得频率,而且获得缺失的模式:
library(naniar)
library(UpSetR)
riskfactors %>%
as_shadow_upset() %>%
upset()
Run Code Online (Sandbox Code Playgroud)
通常可以通过绘制散点图与缺失来了解缺失与非缺失之间的关系:
ggplot(airquality,
aes(x = Ozone,
y = Solar.R)) +
geom_miss_point()
Run Code Online (Sandbox Code Playgroud)
或对于分类变量:
gg_miss_fct(x = riskfactors, fct = marital)
Run Code Online (Sandbox Code Playgroud)
这些示例来自包装插图,其中列出了其他有趣的可视化效果。
summary(airquality)
Run Code Online (Sandbox Code Playgroud)
已经给你这个信息
该VIM包还提供了一些不错的失踪data.frame数据图
library("VIM")
aggr(airquality)
Run Code Online (Sandbox Code Playgroud)