我正在尝试向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
发布于 2018-06-16 05:25:28
我能想到的唯一方法就是使用暴力,重复CI计算:
skim_with(numeric = list(mean = mean,
lwr=~Rmisc::CI(.)["lower"],
upr=~Rmisc::CI(.)["upper"]),
append=FALSE)也许有一些方法可以用quosures等来做,但我不想冒着在周五下午思考它而让我的大脑爆炸的风险。
发布于 2018-06-16 05:48:26
实际上,skim-result中的值比其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,并使用reshape2::dcast处理data.frame版本。
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')https://stackoverflow.com/questions/50882759
复制相似问题