R语言查找分类变量最优、最差水平的代码正确性校验
代码校验结果
你编写的代码无法正确实现查找color变量最优、最差水平的需求,存在结果颠倒、实现逻辑冗余两个核心问题。
问题说明
- 结果完全颠倒:
diamonds数据集中的color是有序分类因子,内置水平顺序按字母序设置为D < E < F < G < H < I < J,但钻石颜色的实际业务等级规则是D为最优(完全无色)、J为最差(带明显黄色调),质量从优到劣排序为 D > E > F > G > H > I > J。你写的sort(diamonds$color, decreasing = TRUE)[1]实际返回最差水平J,并非你注释里标注的最优水平;sort(diamonds$color, decreasing = FALSE)[1]实际返回最优水平D,并非你注释里标注的最差水平。 - 实现方式低效易错:你对全量53940条观测的color列做排序再取首元素的写法完全冗余,若后续遇到某个因子水平在数据集中无对应观测的场景,这种写法无法识别缺失水平,会直接返回错误结果。
正确实现代码
直接操作因子水平即可,不需要排序全量观测,运行效率更高、结果更稳定:
# 加载数据集(diamonds是ggplot2内置数据集,属于tidyverse核心组件) library(ggplot2) data(diamonds) # 获取最优水平 best_color <- levels(diamonds$color)[1] # 获取最差水平 worst_color <- tail(levels(diamonds$color), n = 1)
运行后可以得到:最优水平为D,最差水平为J,和钻石颜色的官方分级规则完全一致。
内容的提问来源于stack exchange,提问作者Keith Duong
相关产品推荐
相关产品推荐

