You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为R语言psych::describe()的输出添加统计众数(mode)列

为psych::describe()输出增加众数列的实现方案

以下是可直接运行的完整实现代码:

# 加载依赖包
library(psych)

# 自定义众数计算函数(你提供的版本可直接复用)
getmode <- function(v) {
  uniqv <- unique(v)
  uniqv[which.max(tabulate(match(v, uniqv)))]
}

# 生成基础描述统计结果
desc_res <- describe(mtcars)
# 批量计算所有列的众数,和描述统计结果按变量名自动匹配
desc_res$mode <- sapply(mtcars, getmode)

# 可选:严格调整列顺序,将众数列放到se列之后
desc_res <- desc_res[, c(setdiff(colnames(desc_res), "mode"), "mode")]

运行后输出结果示例:

vars  n   mean     sd median trimmed    mad   min    max  range  skew kurtosis    se  mode
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 21.00
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  8.00
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 275.80
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 110.00
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  3.92
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  3.44
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 17.02
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  0.00
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  0.00
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  3.00
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  2.00

补充说明

  • 如果你使用DescTools包的Mode函数,遇到存在多个众数的列时,可以加参数ordinal = TRUE仅返回第一个众数,避免长度不匹配报错。
  • 众数计算结果和描述统计结果按变量名自动匹配,无需手动调整顺序。
  • 如需保留psych默认的打印格式,直接调用print(desc_res, digits = 2)即可。

内容的提问来源于stack exchange,提问作者Meg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:45:03