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

如何用R语言tables包的tabular函数对三个变量制表

问题解决:tables包tabular函数显示自定义数值而非频数

当你直接用tabular(UT ~ (age * sex), data=df)时,函数默认统计的是每个交叉分组下的观测行数(也就是频数),你的数据里每个UT、age、sex的组合恰好只有1行,所以结果全是1。要显示values列的数值,需要在公式里明确指定对values列进行汇总操作(比如求和,因为每个分组只有一个值,求和就是它本身)。

修改后的代码如下:

library(tidyverse)
library(tables)

df <- tibble(UT = c(rep(1, 9), rep(2,9)),
             sex = rep(c(rep('MF', 3), rep('M', 3), rep('F', 3)),2),
             age = rep(c('a','b','c'), 6),
             values = c(1:18))

df <- df %>%
  mutate(across(c(UT, sex, age), as.factor))

# 指定汇总values列,用sum函数
tabular(UT ~ (age * sex) * sum(values), data=df)

运行后会得到如下结果,显示的就是values列的对应数值:

age                       
     a        b        c       
     sex      sex      sex     
  UT F   M MF F   M MF F   M MF
  1  3   2 1  6   5 4  9   8 7 
  2 12  11 10 15  14 13 18  17 16

如果你的values列每个分组有多个值,也可以根据需求换成其他汇总函数,比如mean(values)求平均值、max(values)求最大值等。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 14:25:24