前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言新神器visdat包(一行代码看穿整个数据集)

R语言新神器visdat包(一行代码看穿整个数据集)

作者头像
用户1359560
发布2019-05-31 14:11:57
1.3K0
发布2019-05-31 14:11:57
举报

这是一个非常简单,功能却非常强大的包

介绍

(1)visdat的目的是

vis_dat通过将数据框中的变量类显示为绘图,并使用vis_miss简要查看缺失的数据,帮助数据框的可视化。

(2)visdat有6个功能函数:
  • vis_dat()可视化一个数据框,显示列的类别,并显示缺少的数据。
  • vis_miss()只显示缺失的数据,并允许对缺失进行聚类并重新排列。vis_miss()类似于mi包中的missing.pattern.plot。
  • vis_compare()可视化相同维度的两个数据帧之间的差异
  • vis_expect()可视化数据中满足某些条件成立的数据
  • vis_cor()在一个漂亮的热图中可视化变量的相关性
  • vis_guess()可视化数据中各个数据的类别

示例

(1)使用vis_dat()函数

通过经典的airquality数据集(其中包含有关1973年5月至9月纽约每日空气质量测量的信息)展示vis_dat()的功能。

install.packages("visdat")
head(airquality)
> head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6
library(visdat)
vis_dat(airquality)

上图告诉我们:R将此数据集读取为数值型或者整数型,并在OzoneSolar.R中存在一些缺失的数据。缺少的数据由灰色表示。通过图片的输出结果我们可以看出, OzoneSolar.RTempMonth Day这几列为数字型,而Wind这一列为整数型。

(2)使用vis_miss()函数
vis_miss(airquality)

vis_miss()中缺失值的百分比精确到小数点后1位。可以通过设置cluster = TRUE来对缺失进行聚类:

vis_miss(airquality,cluster = TRUE)

通过设置sort_miss = TRUE,列也可以按缺失最多的列排列:

vis_miss(airquality,
         sort_miss = TRUE)

当缺失率<0.1%时,或者缺少数据的数量非常少时

test_miss_df <- data.frame(x1 = 1:10000,
                           x2 = rep("A", 10000),
                           x3 = c(rep(1L, 9999), NA))

vis_miss(test_miss_df)

如果数据不含有任何缺失数据:

vis_miss(mtcars)
(3) vis_compare()对比数据框差异

vis_compare()可以显示两个相同大小的数据帧的差异。 我们来看一个例子。

set.seed(2019-04-03-1105)
chickwts_diff <- chickwts
chickwts_diff[sample(1:nrow(chickwts), 30),sample(1:ncol(chickwts), 2)] <- NA
vis_compare(chickwts_diff, chickwts)

两个数据框的差异被蓝色标出。如果尝试在列不同时比较两个数据框的差异,则会出现一个错误:

chickwts_diff_2 <- chickwts
chickwts_diff_2$new_col <- chickwts_diff_2$weight*2

vis_compare(chickwts, chickwts_diff_2)
# Error in vis_compare(chickwts, chickwts_diff_2) : 
#   Dimensions of df1 and df2 are not the same. vis_compare requires dataframes of identical dimensions.
(4)vis_expect函数

vis_expect可视化数据中满足条件的值。 例如显示数据中大于25的值可以通过:

vis_expect(airquality, ~.x >= 25)

还可以探索一组字符串或可能的NA值,并可视化它们的位置,

bad_data <- data.frame(x = c(rnorm(100), rep("N/A", 10)),
                       y = c(rep("N A ", 30), rnorm(80)))

vis_expect(bad_data, ~.x %in% c("N/A", "N A "))
(5)为了便于绘制数据的相关性,请使用vis_cor函数:

vis_cor是基于基础R中的cor函数,并且可以指示要计算哪个相关系数: “pearson”(默认),“kendall”或“spearman”之一。

vis_cor(airquality, cor_method = "spearman")

可以使用na_action函数指定要对缺失数据执行的操作,该函数再次借用cor方法。例如:

vis_cor(airquality,
        na_action = "complete.obs")
(6)vis_guess()函数

用来猜测数据框中每个单元格是什么类型的数据。因此最好使用一些杂乱的数据进行说明:

messy_vector <- c(TRUE,
                  T,
                  "TRUE",
                  "T",
                  "01/01/01",
                  "01/01/2001",
                  NA,
                  NaN,
                  "NA",
                  "Na",
                  "na",
                  "10",
                  10,
                  "10.1",
                  10.1,
                  "abc",
                  "$%TG")

set.seed(2019-04-03-1106)
messy_df <- data.frame(var1 = messy_vector,
                       var2 = sample(messy_vector),
                       var3 = sample(messy_vector))
messy_df
vis_guess(messy_df)

目前vis_guess非常缓慢。 当在超过1000行的数据上使用它时,请考虑这一点。

(7)绘制交互性图片

您可以通过将它们包装在plotly :: ggplotly中来制作visdat中的图:

library(plotly)
ggplotly(vis_dat(airquality))
ggplotly(vis_miss(airquality))
ggplotly(vis_guess(airquality))
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.05.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档