R语言rank函数详细解析

1.rank函数是什么

rank相关文档[1]可以译为"返回原数组(?)中各个元素排序(?)后的秩次(?)",表面上看确实可以得到次序,但对数组、排序、秩次交待不清。

2.rank函数使用情景

比如,在100米赛跑中,甲乙丙三人的成绩为6.8s, 8.1s, 7.2s,那么用rank函数排序获得名次

> rank(t <- c(6.8, 8.1, 7.2))
[1] 1 3 2

再如,甲乙丙三人考试得分为74,92,85,用同样方法取得名次会适得其反。当然,我们可以认为执行

> rank(-(s <- c(74, 92, 85)))
[1] 3 1 2

可以达到目的,但这并未改变rank函数的排序机制。

3.rank函数排序类型

rank(x, na.last = TRUE,
     ties.method = c("average", "first", "random", "max", "min"))

> t <- c(4, NaN, 4, 7, 8, 2, NaN, 9, 9, 7, NaN, 5, 2, 2, 1)
#同时对相应元素做好标记
> names(t) <- letters[1 : length(t)]

通过以上方法进行排序,得出

Result
  a b c d e f g h i j k l m n o
original 4 NaN 4 7 8 2 NaN 9 9 7 NaN 5 2 2 1
average 5.5 13.0 5.5 8.5 10.0 3.0 14.0 11.5 11.5 8.5 15.0 7.0 3.0 3.0 1.0
first 5 13 6 8 10 2 14 11 12 9 15 7 3 4 1
random (1) 6 13 5 9 10 2 14 11 12 8 15 7 3 4 1
random (2) 5 13 6 8 10 2 14 11 12 9 15 7 4 3 1
max 6 13 6 9 10 4 14 12 12 9 15 7 4 4 1
min 5 13 5 8 10 2 14 11 11 8 15 7 2 2 1

我们发现,标签"b","g","k"的次序并未发生改变,可推断ties.method作用在于处理非缺失值的顺序

不妨参考rank的实现代码

function (x, na.last = TRUE, ties.method = c("</
  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值