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

R语言使用prop.table()合并分类输出占比的实现方法

R语言计算多分类合并占比解决方案

你想到的「剔除不吸烟样本后计算占比」的方法是完全正确的,以下是3种不同场景下可复用的实现方案:


方法1:直接对占比结果按类别名称求和(最适合临时计算)

prop.table返回的是带类别名称的命名向量,无需额外处理原始数据,直接提取目标类别求和即可:

# 1. 计算各吸烟类别的全量占比
smoke_prop <- prop.table(table(Student1995$smoke))
# 2. 提取两类吸烟者的占比求和
total_smoker_prop <- sum(smoke_prop[c("Occasional", "Regular")])
# 输出结果,可按需用round()调整小数精度
total_smoker_prop

运行后直接返回0.38的预期结果。


方法2:新增二分类标识列(适合后续频繁使用吸烟分组逻辑)

如果后续分析经常需要区分吸烟/不吸烟群体,可以提前给数据框新增分组列,后续计算无需重复写判断逻辑:

# 新增is_smoker列,吸烟为TRUE,不吸烟为FALSE
Student1995$is_smoker <- Student1995$smoke %in% c("Occasional", "Regular")
# 方法A:用prop.table计算占比
prop.table(table(Student1995$is_smoker))
# 方法B:直接计算逻辑值均值,和上面的结果完全等价(逻辑值中TRUE等价于1、FALSE等价于0,均值就是TRUE的占比)
mean(Student1995$is_smoker)

方法3:合并因子水平(适合做汇总统计报告)

如果需要保留分类变量的因子结构,输出同时包含非吸烟者/吸烟者的汇总占比,可以合并原有因子水平后再统计:

# 合并吸烟相关的因子水平
smoke_group <- forcats::fct_collapse(Student1995$smoke,
  "吸烟者" = c("Occasional", "Regular"),
  "非吸烟者" = "Not"
)
# 计算分组占比
prop.table(table(smoke_group))

运行后会同时输出两类群体的占比,适合直接用于统计结果展示。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:45:06