如何用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
相关产品推荐
相关产品推荐

