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

如何在R语言中对含重复值的向量生成不跳级的排名?

实现无跳过、重复值同排名的向量排名

方法1:使用dplyr的dense_rank()(推荐)

dense_rank()专门用于生成不跳过位次的稠密排名,完美匹配需求:重复值赋予相同排名,返回向量长度与原向量一致,且不会跳过排名。

代码示例:

library(dplyr)
x <- c(1, 5, 10, 10, 50)
dense_rank(x)

执行结果:

[1] 1 2 3 3 4

方法2:基础R实现(无需额外包)

如果不想依赖第三方包,可以结合match()和sort(unique())实现相同效果——利用排序后的唯一值构建映射,将原向量元素对应到其在唯一值序列中的位置:

代码示例:

x <- c(1, 5, 10, 10, 50)
match(x, sort(unique(x)))

执行结果同样为:

[1] 1 2 3 3 4

说明

  • 你之前尝试的rank(ties.method = "min")会保留重复值的最小原始位次,但后续排名会跳过被重复值占用的位次,因此得到[1] 1 2 3 3 5;
  • ties.method = "first"则按元素出现顺序给重复值分配不同排名,不符合重复值同排名的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:35:56