首页 > 解决方案 > 创建具有特定汇总统计的变量表

问题描述

我正在尝试按以下格式制作所有数值变量(即特征)的表格:

Feature | Count | % Missing | Cardinality | Min. | 1st Quartile | Mean | Median | 3rd Quartile | Max. | Std. Dev. |

--------|-------|------------|-------------|------| --------------|------|--------|--------------|---- --|-----------| | | | | | | | | | | |

因此,每一行表示一个特定的数值变量,每一列表示上面显示的统计数据(计数、缺失百分比、基数、最小值、第一四分位数、平均值、中位数、第三四分位数、最大标准差)

假设我的数据集称为 Mashable,我的数值变量称为 X、Y 和 Z。我将如何创建此表?

提前致谢!

标签: rstatisticsdplyr

解决方案


如果您已经在使用dplyr,您可以利用长形数据和分组,并将您需要的所有功能视为摘要。这使您可以轻松扩展,因此 3 个变量的工作流程与 25 或 100 个变量的工作流程相同。它还可以相对快速地应用您想要的任何函数。

我用 x、y 和 z 制作了虚拟数据,然后在其上绑定了几行NAs,以显示缺失值计数。将其收集为长数据,按变量分组,然后使用您想要的任何汇总函数。我开始了你命名的前几个。这为您提供了您要求的格式。

library(tidyverse)

tibble(
  x = rnorm(100, mean = 1, sd = 1),
  y = rnorm(100, mean = 10, sd = 1),
  z = rexp(100, rate = 0.01)
) %>%
  bind_rows(tibble(x = c(NA, NA), y = c(NA, NA), z = c(NA, NA))) %>%
  gather(key = variable, value = value) %>%
  group_by(variable) %>%
  summarise(
    count = n(),
    missing = sum(is.na(value)),
    share_missing = missing / count,
    mean = mean(value, na.rm = T),
    sd = sd(value, na.rm = T),
    q1 = quantile(value, 0.25, na.rm = T)
  )
#> # A tibble: 3 x 7
#>   variable count missing share_missing    mean     sd     q1
#>   <chr>    <int>   <int>         <dbl>   <dbl>  <dbl>  <dbl>
#> 1 x          102       2        0.0196   0.997  1.08   0.246
#> 2 y          102       2        0.0196   9.81   0.962  9.10 
#> 3 z          102       2        0.0196 106.    90.6   39.9

reprex 包(v0.2.0) 于 2018 年 5 月 20 日创建。


推荐阅读