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

如何在expsss生成的SPSS式表格表头中添加总案例数与频率统计

使用R语言expsss包生成带总案例数的SPSS风格统计表格

需求:生成SPSS风格的统计表格,要求在表头显示总案例数(总响应数),同时获取表头分组的频率分布情况。

示例数据

df <- data.frame(
  "TB1"=c("OPS", "OPS",  "HR",   "ADMIN",    "HR",   "ADMIN",    "ADMIN",    "HR",   "HR",   "HR",   "Sales",    "Sales",    "Sales",    "HR",   "HR",   "HR",   "HR",   "Sales",    "Sales"),
  "TB2"=c("Sales",   "ADMIN",    "ADMIN",    "Sales",    "ADMIN",    "ADMIN",    "ADMIN",    "HR",   "HR",   "HR",   "HR",   "HR",   "HR",   "OPS",  "OPS",  "OPS",  "OPS",  "HR",   "HR"),
  "TB3"=c("ADMIN",   "Sales",    "OPS",  "Sales",    "HR",   "ADMIN",    "HR",   "HR",   "ADMIN",    "ADMIN",    "HR",   "HR",   "HR",   "OPS",  "HR",   "OPS",  "HR",   "HR",   "Sales"),
  "TB4"=c("Global",  "Regional", "Regional", "Global",   "Global",   "Regional", "Regional", "Global",   "Global",   "Regional", "Regional", "Global",   "Global",   "Regional", "Global",   "Regional", "Global",   "Regional", "Global")
)

生成带总案例数的SPSS风格表格

通过expsss包的total()函数自定义表头标签,结合cro_cpct生成符合要求的交叉表:

library(expsss)

# 计算总案例数
total_n <- nrow(df)

# 构建包含总计(带案例数标签)和TB4分组的banner
banner <- with(df, list(total(label = paste("总计 (N =", total_n, ")")), TB4))

# 生成SPSS风格的交叉百分比表格,同时显示标签和数值
t1 <- cro_cpct(df$TB1, banner, show_labels = "both", total_row_position = "none")

# 查看表格
t1

如果需要在TB4的每个分组表头单独标注该组案例数,可以进一步调整:

# 计算TB4各分组的案例数
tb4_group_n <- table(df$TB4)

# 为每个分组添加带案例数的标签
for (group in names(tb4_group_n)) {
  df[[group]] <- df$TB4 == group
  attr(df[[group]], "label") <- paste(group, "(N =", tb4_group_n[group], ")")
}

# 重新构建banner并生成表格
banner <- with(df, list(total(label = paste("总计 (N =", total_n, ")")), 
                        df$Global, df$Regional))
t1 <- cro_cpct(df$TB1, banner, show_labels = "both")
t1

获取表头分组的频率分布

直接使用基础R函数获取TB4分组的频数和占比:

# 获取TB4分组的频数
tb4_freq <- table(df$TB4)

# 计算百分比
tb4_pct <- prop.table(tb4_freq) * 100

# 整理为结果数据框
freq_summary <- data.frame(
  分组名称 = names(tb4_freq),
  频数 = as.integer(tb4_freq),
  百分比 = round(tb4_pct, 1)
)

print(freq_summary)

输出结果示例:

分组名称 频数 百分比
1   Global   10    52.6
2 Regional    9    47.4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 10:55:23