PDF 84 / 520 Ranking
English · PDF 84
Original PDF page 84
中文 · PDF 84

排序

排序函数有很多种,但你应该从 min_rank() 开始。它执行最常见的排序类型(例如,第一、第二、第三、第四)。默认情况下,最小的值获得最小的排名;使用 desc(x) 可以让最大的值获得最小的排名:

y <- c(1, 2, 2, NA, 3, 4) min_rank(y) #> [1] 1 2 2 NA 4 5 min_rank(desc(y)) #> [1] 5 3 3 NA 2 1

如果 min_rank() 不能满足你的需求,可以看看这些变体:row_number()、dense_rank()、percent_rank()、cume_dist() 和 ntile()。详情请参阅它们的帮助页面:

row_number(y) #> [1] 1 2 3 NA 4 5 dense_rank(y) #> [1] 1 2 2 NA 3 4 percent_rank(y) #> [1] 0.00 0.25 0.25 NA 0.75 1.00 cume_dist(y) #> [1] 0.2 0.6 0.6 NA 0.8 1.0

练习

    1. 目前 dep_time 和 sched_dep_time 看起来很方便,但难以进行计算,因为它们并不是真正的连续数字。请将它们转换为更方便的表示形式,即自午夜以来的分钟数。
    1. 比较 air_time 与 arr_time dep_time。你期望看到什么?你实际看到了什么?你需要做什么来修复它?
    1. 比较 dep_time、sched_dep_time 和 dep_delay。你期望这三个数字之间有什么关系?
    1. 使用排序函数找出延误最严重的 10 个航班。你想如何处理并列情况?请仔细阅读 min_rank() 的文档。
    1. 1:3 + 1:10 返回什么?为什么?
    1. R 提供了哪些三角函数?