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

如何在RMarkdown LaTeX PDF的datasummary中重命名变量

在datasummary中重命名变量的几种解决方法

其实datasummary(modelsummary包)是支持变量重命名的,以下是几种实用方案:

方法1:在公式中直接用label()指定别名

你可以在构建公式时,用label(原变量名, "自定义名称")替换原变量名,datasummary会自动显示自定义名称。修改你的代码如下:

library(modelsummary)
library(glue)

summary_vars <- as.formula(glue("label(any_prio, '任何优先级冲突') + 
  label(any_prio_on, '任何优先级冲突(发生中)') + 
  label(any_prio_off, '任何优先级冲突(已结束)') + 
  label(war_prio, '战争优先级冲突') + 
  label(war_prio_on, '战争优先级冲突(发生中)') + 
  label(war_prio_off, '战争优先级冲突(已结束)') + 
  label(war_col, '殖民战争') + 
  label(war_inc, '国内战争(增量)') + 
  label(war, '战争') + 
  label(GPCP, '总降雨量') + 
  label(GPCP_g, '降雨量增长率') + 
  label(GPCP_g_l, '滞后降雨量增长率') + 
  label(gdp_g, 'GDP增长率') + 
  label(gdp_g_l, '滞后GDP增长率') + 
  label(y_0, '初始GDP') + 
  label(polity2l, '滞后政体得分') + 
  label(polity2l_6, '滞后政体得分阈值') + 
  label(deml, '滞后民主程度') + 
  label(ethfrac, '族群分化度') + 
  label(relfrac, '宗教分化度') + 
  label(Oil, '石油出口占比') + 
  label(mtnest, '山地占比') + 
  label(lpopl1, '滞后人口对数') + 
  label(tot_100_g, '贸易开放度') ~ 
  mean*Arguments(na.rm = TRUE) + sd*Arguments(na.rm = TRUE) + N"))

TableA1 <- datasummary(data = mss_rep, summary_vars, booktabs = T,
                      fmt = 2,
                      col.names = c("", "均值", "标准差", "观测数"),
                      caption = "描述性统计") |> 
          kable_styling() |>
                   pack_rows("A. 国内冲突指标(1981–99)", 1, 9) |>
                   pack_rows("B. 降雨量指标(1981–99)", 10, 12) |> 
                   pack_rows("C. 经济增长", 13, 14) |>
                   pack_rows("D. 国家特征", 15, 24)

TableA1

方法2:给数据框变量添加标签属性

先给数据集的变量设置label属性,datasummary会自动读取这些标签作为显示名称,无需修改原公式:

library(labelled)

# 批量设置变量标签
var_label(mss_rep) <- list(
  any_prio = "任何优先级冲突",
  any_prio_on = "任何优先级冲突(发生中)",
  any_prio_off = "任何优先级冲突(已结束)",
  war_prio = "战争优先级冲突",
  GPCP = "总降雨量",
  gdp_g = "GDP增长率",
  # 其他变量按此格式依次添加
  polity2l = "滞后政体得分",
  ethfrac = "族群分化度"
)

# 之后直接运行你原来的代码即可
summary_vars <- as.formula(glue("any_prio + any_prio_on + any_prio_off + war_prio + war_prio_on + 
  war_prio_off + war_col + war_inc + war + GPCP + GPCP_g + GPCP_g_l + gdp_g + 
  gdp_g_l + y_0 + polity2l + polity2l_6 + deml + ethfrac + relfrac + Oil + 
  mtnest + lpopl1 + tot_100_g ~ mean*Arguments(na.rm = TRUE) + sd*Arguments(na.rm = TRUE) + N"))

TableA1 <- datasummary(data = mss_rep, summary_vars, booktabs = T,
                      fmt = 2,
                      col.names = c("", "均值", "标准差", "观测数"),
                      caption = "描述性统计") |> 
          kable_styling() |>
                   pack_rows("A. 国内冲突指标(1981–99)", 1, 9) |>
                   pack_rows("B. 降雨量指标(1981–99)", 10, 12) |> 
                   pack_rows("C. 经济增长", 13, 14) |>
                   pack_rows("D. 国家特征", 15, 24)

TableA1

方法3:用datasummary_df自定义输出

如果需要更灵活的控制,可以先计算统计量得到数据框,手动修改变量名后再生成表格:

# 先计算统计量
stats_df <- datasummary_df(
  formula = any_prio + any_prio_on + any_prio_off + war_prio + war_prio_on + 
    war_prio_off + war_col + war_inc + war + GPCP + GPCP_g + GPCP_g_l + gdp_g + 
    gdp_g_l + y_0 + polity2l + polity2l_6 + deml + ethfrac + relfrac + Oil + 
    mtnest + lpopl1 + tot_100_g ~ mean*Arguments(na.rm = TRUE) + sd*Arguments(na.rm = TRUE) + N,
  data = mss_rep,
  fmt = 2
)

# 手动修改变量名称(按顺序对应)
stats_df$variable <- c(
  "任何优先级冲突", "任何优先级冲突(发生中)", "任何优先级冲突(已结束)",
  "战争优先级冲突", "战争优先级冲突(发生中)", "战争优先级冲突(已结束)",
  "殖民战争", "国内战争(增量)", "战争", "总降雨量", "降雨量增长率",
  "滞后降雨量增长率", "GDP增长率", "滞后GDP增长率", "初始GDP",
  "滞后政体得分", "滞后政体得分阈值", "滞后民主程度", "族群分化度",
  "宗教分化度", "石油出口占比", "山地占比", "滞后人口对数", "贸易开放度"
)

# 生成表格
TableA1 <- datasummary_df(stats_df, booktabs = T,
                          col.names = c("", "均值", "标准差", "观测数"),
                          caption = "描述性统计") |> 
          kable_styling() |>
                   pack_rows("A. 国内冲突指标(1981–99)", 1, 9) |>
                   pack_rows("B. 降雨量指标(1981–99)", 10, 12) |> 
                   pack_rows("C. 经济增长", 13, 14) |>
                   pack_rows("D. 国家特征", 15, 24)

TableA1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 12:50:27