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

如何在expss包的tab_stat_fun中添加四分位数/IQR统计量

问题1:添加IQR和四分位数统计量

完全可以在现有逻辑下直接添加,expss提供了加权分位数计算函数w_quantile,你可以直接在tab_stat_fun里自定义对应统计量即可,修改后的代码如下:

library(expss)
library(dplyr) 

CenAll %>% 
  tab_cells(Maintenance, Organization, SocialConnection, Entertainment,
            Uniqueness, Colours, Sound, Irritated, Safe,
            Restricted, Threatened, Stimulated, CaredFor, 
            Rejected, Calm, Free, Anxious, Green,
            Gray, Water) %>%
  tab_cols(total(label = "All| |"), Location) %>% 
  tab_stat_fun(
    Mean = w_mean, 
    "Median" = w_median, 
    "Q25" = function(x, weight = NULL, ...) w_quantile(x, weight, probs = 0.25, na.rm = TRUE),
    "Q75" = function(x, weight = NULL, ...) w_quantile(x, weight, probs = 0.75, na.rm = TRUE),
    "IQR" = function(x, weight = NULL, ...) {
      qs = w_quantile(x, weight, probs = c(0.25, 0.75), na.rm = TRUE)
      return(qs[2] - qs[1])
    },
    "Std. dev." = w_sd, 
    "Valid N" = w_n, 
    method = list
  ) %>%
  tab_pivot()

如果你的数据没有加权需求,直接把w_quantile换成基础的quantile函数、去掉weight参数即可。

问题2:多变量分组生成统计表格的优化方案

有几个可以简化操作、提升规整度的实现方式:

  • 如果你要统计的变量有命名规律,不用逐个手动录入tab_cells,可以直接用变量选择语法批量选取:
    比如要选所有数值变量、或者符合特定命名规则的变量,写法如下:
    # 示例1:批量选数据框内所有数值变量
    num_vars = CenAll %>% select(where(is.numeric)) %>% colnames()
    # 示例2:选特定前缀的变量,比如所有以"Score_"开头的变量
    # num_vars = CenAll %>% select(starts_with("Score_")) %>% colnames()
    
    CenAll %>% 
      tab_cells(num_vars) %>% # 直接传入变量名向量即可
      tab_cols(total(label = "合计| |"), Location) %>% 
      # 上面定义的统计量函数放在此处
      tab_pivot()
    
  • 如果需要调换行列布局让表格更易读,可以在tab_pivot()后面加tab_transpose(),灵活调整统计量和分组的行列位置。
  • 如果需要导出到本地Excel直接使用,可以在最后加openxlsx::write.xlsx(file = "分组统计结果.xlsx"),expss生成的表格会保留层级格式直接导出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:18:01