You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用modelsummary对单因子变量制表?解决下标越界错误

解决modelsummary单因子变量制表的下标越界问题

错误原因

datasummary_crosstab是专门用于两个分类变量交叉统计的函数,你传入的cyl ~ 1中,右侧的1不是有效分类变量,导致函数无法正常解析交叉表结构,从而抛出「下标越界」错误。

正确实现方式(列百分比总和为1)

方法1:使用datasummary直接生成单变量比例表

这是最直接的方式,利用modelsummary内置的Prop()统计量生成比例(总和为1):

library(modelsummary)

# 先将cyl转为因子(确保是分类变量)
mtcars$cyl <- factor(mtcars$cyl)

# 生成单变量比例表,比例总和为1
datasummary(cyl ~ Prop(), data = mtcars)

方法2:用datasummary_crosstab配合虚拟变量

如果坚持要用datasummary_crosstab,可以创建一个全为同一值的虚拟列,作为交叉表的列变量,再转换列百分比为小数(总和为1):

library(modelsummary)

mtcars$cyl <- factor(mtcars$cyl)
# 添加虚拟列
mtcars$all <- "All"

# 生成列百分比表,转换为小数后总和为1
datasummary_crosstab(cyl ~ all, 
                     data = mtcars, 
                     statistic = ~ ColPercent()/100)

补充:同时展示频数和比例

如果需要同时显示频数和比例,可以扩展公式:

datasummary(cyl ~ Freq + Prop(), data = mtcars)

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

火山引擎 最新活动