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

基于R语言psych包的多变量分组描述统计实现及问题排查

R psych包:分组描述统计的两个问题解答

问题1:为什么输出的item编号是11和12?

这个item列的编号对应的是变量在原始数据框data_excel中的列索引位置。你使用了attach(data_excel)后单独指定StockPrice作为分析变量,但describeBy()仍然会参考该变量在原始数据框里的位置。

举个例子,如果data_excel里的第11列正好是StockPrice,那么当你按ggroup分组统计时,每个组的结果行都会显示这个列索引(11),所以你看到的是11和12(两个分组分别对应一行)。

你可以通过运行以下代码验证这一点:

# 查看data_excel的变量顺序和索引
colnames(data_excel)
# 或者直接找StockPrice的位置
which(colnames(data_excel) == "StockPrice")

如果不想看到这个item列,其实可以在describeBy()的参数里加上item=FALSE,就会隐藏这一列啦。

问题2:如何实现多变量的分组描述统计?

你当前的代码报错是因为describeBy()的参数格式不对:

  • 第一个参数x需要是一个单一的对象(比如数据框、向量矩阵),不能直接罗列多个变量名;
  • 你在ESGscore和group之间漏掉了逗号,导致语法错误。

正确的做法是把需要分析的多个变量组合成一个数据框传入,同时建议避免使用attach()(容易引发环境变量冲突),直接通过数据框索引来指定变量。修改后的代码如下:

# 加载包(如果已经加载可以跳过)
install.packages("psych")
library(psych)

# 直接指定数据框中的目标变量,按ggroup分组统计
describeBy(
  x = data_excel[, c("StockPrice", "BookValuePS", "EPS", "ESGscore")],
  group = data_excel$ggroup,  # 明确指定分组变量来自数据框
  mat = TRUE,
  skew = FALSE,
  quant = c(0.25, 0.75)
)

这样运行后,就会输出所有目标变量按ggroup分组后的完整描述统计结果,每个变量的每个分组都会对应一行结果,包含你需要的均值、标准差、分位数等指标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 06:44:06