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

如何在expss表格中跳过二分变量零水平展示目标统计结果

用expss包生成仅展示二分变量特定水平的汇总表

我明白你想仅展示二分变量BrCa中取值为1(患乳腺癌)的患者数量和百分比,按group分组汇总。你尝试用tab_net_cell没得到预期结果,大概率是语法用法不对,我来给你修正一下:

首先先确认你的示例数据:

df <- data.frame(BrCa = c(1,1,1,0,0,0,NA,NA,0,0))
df$group <- c(1,2,1,2,1,2,1,2,1,2)

方法一:直接在tab_cells中筛选目标水平

这种方式最直观,直接指定BrCa == 1作为统计对象,同时给它设置清晰的标签:

library(expss)

df %>% 
  tab_cols(group) %>%  # 按group列分组
  tab_cells(BrCa == 1 ~ "患有乳腺癌 (BrCa=1)") %>%  # 筛选BrCa=1的样本,设置标签
  tab_stat_cpct(total_row_position = "none", label = "%") %>%  # 计算百分比
  tab_stat_cases(total_row_position = "none", label = "N") %>%  # 计算样本量
  tab_pivot(stat_position = "inside_rows")  # 调整表格布局

方法二:正确使用tab_net_cells函数

如果你想坚持用tab_net_cells,需要用net()函数来定义要汇总的组,而不是直接赋值:

df %>% 
  tab_cols(group) %>% 
  tab_cells(BrCa) %>% 
  tab_net_cells(net(label = "患有乳腺癌 (BrCa=1)", BrCa == 1)) %>%  # 用net()定义目标组
  tab_stat_cpct(total_row_position = "none", label = "%") %>% 
  tab_stat_cases(total_row_position = "none", label = "N") %>% 
  tab_pivot(stat_position = "inside_rows")

预期输出

两种方法都会得到类似这样的表格,只展示BrCa=1的统计结果:

|                      | group | 1    | 2    |
 |----------------------|-------|------|------|
 |患有乳腺癌 (BrCa=1) - % |       | 33.3 | 20.0 |
 |患有乳腺癌 (BrCa=1) - N |       | 1    | 1    |

这里的百分比是基于**有效样本(排除NA)**计算的:group1有3个非NA样本,其中1个患乳腺癌;group2有4个非NA样本,1个患乳腺癌,所以对应百分比分别是33.3%和20.0%。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:12:55