如何用R语言的table()函数获取列中唯一元素占比并排序
解决方案
步骤1:计算各类占比
你已经通过table(data$Level)拿到了频数表,直接用prop.table()包裹这个结果就能算出每类的占比(默认是小数形式):
# 先存好频数表 level_count <- table(data$Level) # 计算占比(小数) level_prop <- prop.table(level_count) # 转成百分比形式(可选) level_prop_percent <- prop.table(level_count) * 100
步骤2:按指定顺序排序
默认table的输出顺序是字母序(High、Low、Medium),要改成Low、Medium、High的顺序,有两种简单方式:
方法一:先把列转为指定顺序的因子
提前把Level列设置成有序因子,后续的表和占比都会自动按你要的顺序输出:
# 给Level列指定固定顺序 data$Level <- factor(data$Level, levels = c("Low", "Medium", "High")) # 重新生成排序后的频数和占比 level_count_sorted <- table(data$Level) level_prop_sorted <- prop.table(level_count_sorted) * 100
方法二:直接对已有结果排序
如果不想修改原数据,直接用索引指定顺序即可:
# 假设已经算出了level_prop_percent level_prop_sorted <- level_prop_percent[c("Low", "Medium", "High")]
查看最终结果
直接输入变量名就能看到排序后的占比:
level_prop_sorted
输出会是类似这样的格式:
Low Medium High 30.3 33.2 36.5
内容的提问来源于stack exchange,提问作者Philipe
相关产品推荐
相关产品推荐

