如何获取列联表的行总计百分比(基于mtcars数据集)
获取mtcars数据集中按cyl分组的vs变量行百分比列联表
你的原代码中prop.table()默认计算的是整体占比(所有单元格占总观测数的比例),要实现“给定cyl类别下,vs取0或1的观测值占比”,只需给prop.table()指定margin参数,按cyl分组(列维度)计算比例。
修改后的代码
# 生成vs与cyl的交叉表(行:vs,列:cyl) cross_table <- table(mtcars$vs, mtcars$cyl) # 按列(cyl分组)计算组内百分比,margin=2代表按列维度汇总 grouped_percent_table <- prop.table(cross_table, margin = 2) # 格式化为带两位小数的百分比(可选,方便查看) grouped_percent_table <- round(grouped_percent_table * 100, 2) # 查看结果 print(grouped_percent_table)
结果说明
运行后每个cyl类别对应的列内百分比总和为100%:
- 比如
cyl=4列的数值,代表在4缸车型中,vs=0和vs=1的观测值占该组总数量的比例 - 同理
cyl=6和cyl=8列的数值,分别对应各自缸数分组内的vs占比
验证示例
以cyl=4组为例:
# 查看cyl=4的总观测数 table(mtcars$cyl)["4"] # 结果为11 # 查看cyl=4组内vs=1的数量 table(mtcars$vs[mtcars$cyl == 4])["1"] # 结果为10 # 手动计算占比:10/11 ≈ 90.91%,与代码输出一致
内容的提问来源于stack exchange,提问作者four77
相关产品推荐
相关产品推荐

