我正在尝试为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
?
答案 0 :(得分:2)
我能想到的只有蛮力,重复CI计算:
skim_with(numeric = list(mean = mean,
lwr=~Rmisc::CI(.)["lower"],
upr=~Rmisc::CI(.)["upper"]),
append=FALSE)
可能有一些方法可以通过判断等来做到这一点但是我不想冒着让我的大脑在星期五下午思考它而冒险的风险。
答案 1 :(得分:2)
该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
- 类,并使用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')