【发布时间】:2022-01-08 10:45:07
【问题描述】:
有没有人编写代码在psych::describe() 输出中添加一列来标识每个变量的统计模式?或者,您将如何实现这一目标?
例如,使用数据集mtcars,我们可以使用psych包轻松生成数据的描述性统计,但输出中不包含统计模式。
> mydata = mtcars
> head(mydata)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
> library(psych)
> describe(mydata)
vars n mean sd median trimmed mad min max range skew kurtosis se
mpg 1 32 20.09 6.03 19.20 19.70 5.41 10.40 33.90 23.50 0.61 -0.37 1.07
cyl 2 32 6.19 1.79 6.00 6.23 2.97 4.00 8.00 4.00 -0.17 -1.76 0.32
disp 3 32 230.72 123.94 196.30 222.52 140.48 71.10 472.00 400.90 0.38 -1.21 21.91
hp 4 32 146.69 68.56 123.00 141.19 77.10 52.00 335.00 283.00 0.73 -0.14 12.12
drat 5 32 3.60 0.53 3.70 3.58 0.70 2.76 4.93 2.17 0.27 -0.71 0.09
wt 6 32 3.22 0.98 3.33 3.15 0.77 1.51 5.42 3.91 0.42 -0.02 0.17
qsec 7 32 17.85 1.79 17.71 17.83 1.42 14.50 22.90 8.40 0.37 0.34 0.32
vs 8 32 0.44 0.50 0.00 0.42 0.00 0.00 1.00 1.00 0.24 -2.00 0.09
am 9 32 0.41 0.50 0.00 0.38 0.00 0.00 1.00 1.00 0.36 -1.92 0.09
gear 10 32 3.69 0.74 4.00 3.62 1.48 3.00 5.00 2.00 0.53 -1.07 0.13
carb 11 32 2.81 1.62 2.00 2.65 1.48 1.00 8.00 7.00 1.05 1.26 0.29
鉴于psych::describe(mydata) 的输出不包含数据集中每个变量的统计模式信息,我们如何在psych::describe(mydata) 输出中为数据集中每个变量的统计模式添加一列?
对于上下文,添加和使用用于识别统计模式的函数没有问题,但是为它生成输出需要我通过变量单独询问它。我尝试了各种方法来为psych::describe (mydata) 输出添加统计模式列,但总是会出现奇怪的错误。
为了生成模式,我都为它编写了函数
getmode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
并使用包DescTools,但两者都需要我命名一个变量来生成它的模式。我想对mtcars 数据框中的每一列都执行此操作。
tldr;我想在psych::describe(mydata) 输出中的“se”之后添加一列,描述每个变量的统计模式。你有什么推荐?
【问题讨论】: