r-如何在psyc::description(mydata)输出中添加统计模式的列



是否有人编写代码向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;我想在";se";在描述每个变量的统计模式的CCD_ 9输出中。你推荐什么

您可以将cbind的附加函数describe输出作为一个新列。

library(psych)
result <- cbind(describe(mydata), Mode = sapply(mydata, getmode))
result
#     vars  n   mean     sd median trimmed    mad  min   max range  skew kurtosis     se  Mode
#mpg     1 32  20.09   6.03   19.2   19.70   5.41 10.4  33.9  23.5  0.61   -0.373  1.065  21.0
#cyl     2 32   6.19   1.79    6.0    6.23   2.97  4.0   8.0   4.0 -0.17   -1.762  0.316   8.0
#disp    3 32 230.72 123.94  196.3  222.52 140.48 71.1 472.0 400.9  0.38   -1.207 21.909 275.8
#hp      4 32 146.69  68.56  123.0  141.19  77.10 52.0 335.0 283.0  0.73   -0.136 12.120 110.0
#drat    5 32   3.60   0.53    3.7    3.58   0.70  2.8   4.9   2.2  0.27   -0.715  0.095   3.9
#wt      6 32   3.22   0.98    3.3    3.15   0.77  1.5   5.4   3.9  0.42   -0.023  0.173   3.4
#qsec    7 32  17.85   1.79   17.7   17.83   1.42 14.5  22.9   8.4  0.37    0.335  0.316  17.0
#vs      8 32   0.44   0.50    0.0    0.42   0.00  0.0   1.0   1.0  0.24   -2.002  0.089   0.0
#am      9 32   0.41   0.50    0.0    0.38   0.00  0.0   1.0   1.0  0.36   -1.925  0.088   0.0
#gear   10 32   3.69   0.74    4.0    3.62   1.48  3.0   5.0   2.0  0.53   -1.070  0.130   3.0
#carb   11 32   2.81   1.62    2.0    2.65   1.48  1.0   8.0   7.0  1.05    1.257  0.286   4.0

最新更新