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

