首页 > 解决方案 > 带有脱脂的输出置信区间

问题描述

我正在尝试为生成的输出添加置信区间skimr

library(skimr); library(Rmisc)

skim_with(numeric = list(CI = Rmisc::CI), append = FALSE)

skim(mtcars)

Skim summary statistics
 n obs: 32 
 n variables: 11 

── Variable type:numeric ──────────────────────────────────────────────────────────────────────────────────────────────────────────
 variable                    CI
       am   upp: 0.59, mea: 0  
     carb   upp: 3.39, mea: 2  
      cyl   upp: 6.83, mea: 6  
     disp upp: 275.41, mea: 230
     drat   upp: 3.79, mea: 3  
     gear   upp: 3.95, mea: 3  
       hp upp: 171.41, mea: 146
      mpg  upp: 22.26, mea: 20 
     qsec  upp: 18.49, mea: 17 
       vs   upp: 0.62, mea: 0  
       wt   upp: 3.57, mea: 3  

由于缺少置信区间的下限,这并没有完全奏效。如何获得置信区间的下限和上限skimr

标签: rdataframeskimr

解决方案


实际上,该略读结果中的值比其print.skim_df输出显示的值多得多。看dput(skim(mtcars))

class(skim(mtcars))
[1] "skim_df"    "tbl_df"     "tbl"        "data.frame"
print.data.frame(skim(mtcars))
# gives a long result

   variable    type stat level       value   formatted
1       mpg numeric   CI upper  22.2635715  upp: 22.26
2       mpg numeric   CI  mean  20.0906250  mea: 20.09
3       mpg numeric   CI lower  17.9176785  low: 17.92
4       cyl numeric   CI upper   6.8313934   upp: 6.83
5       cyl numeric   CI  mean   6.1875000   mea: 6.19
6       cyl numeric   CI lower   5.5436066   low: 5.54
7      disp numeric   CI upper 275.4065392 upp: 275.41
#   snipped the rest.....

我基本上删除了skim_df-classes 并使用 data.frame 版本使用reshape2::dcast.

reshape2::dcast( as.data.frame(skim(mtcars))[c('variable','level','value')],
                 variable~level ,value.var='value')
   variable       lower       mean       upper
1        am   0.2263446   0.406250   0.5861554
2      carb   2.2301583   2.812500   3.3948417
3       cyl   5.5436066   6.187500   6.8313934
4      disp 186.0372108 230.721875 275.4065392
5      drat   3.4037903   3.596563   3.7893347
6      gear   3.4214933   3.687500   3.9535067
7        hp 121.9679499 146.687500 171.4070501
8       mpg  17.9176785  20.090625  22.2635715
9      qsec  17.2044883  17.848750  18.4930117
10       vs   0.2557828   0.437500   0.6192172
11       wt   2.8644785   3.217250   3.5700215

然后我测试了是否as.data.frame真的需要它而不是,所以这更紧凑:

reshape2::dcast( skim(mtcars),
                 variable~level , value.var='value')

推荐阅读