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

使用mutate调换gtsummary分组列后计算得到的差值为负数问题

你遇到的差值符号不符合预期的问题,核心是add_difference()默认的差值计算逻辑和你需要的方向不匹配:
tbl_summary的by组列显示顺序由分组变量的因子水平决定,而add_difference()默认的差值计算规则是「by变量的第二个因子水平 减去 第一个因子水平」,和你预期的计算方向正好相反,所以会出现本应为正的差值显示为负的情况。

你不需要调整数据集的行顺序或者因子水平,直接在add_difference()中添加reverse = TRUE参数反转差值计算方向即可,修改后的代码如下:

homesurvey %>%
  select(period, CB2.Textbooks, CB2.Magazines, CB2.Newspapers, CB2.Religious_books, CB2.Coloring_books, CB2.Comics) %>%
  mutate(period = forcats::fct_rev(period)) %>%
  tbl_summary(by = period,
              statistic = all_continuous() ~ "{n} ({sd})",
              label = list (CB2.Textbooks ~ "Textbooks",
                            CB2.Magazines ~ "Magazines",
                            CB2.Newspapers ~ "Newspapers",
                            CB2.Religious_books ~ "Religious books",
                            CB2.Coloring_books ~ "Coloring books",
                            CB2.Comics ~ "Comics")
              )%>%
  add_difference(reverse = TRUE) %>%
  modify_column_hide(ci)

如果你不想通过反转因子调整列显示顺序,也可以通过ref_group参数明确指定差值计算的参考组,配合modify_column_move()调整列的展示顺序即可,两者逻辑独立不会互相干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:45:04