博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
R语言学习笔记:sort、rank、order、arrange排序函数
阅读量:5098 次
发布时间:2019-06-13

本文共 2235 字,大约阅读时间需要 7 分钟。

  R语言中排序有几个基本函数:sort()、rank()、order()、arrange()

一、总结

  sort()函数是对向量进行从小到大的排序

  rank()函数返回的是对向量中每个数值对应的秩

  order()函数返回的值表示位置,依次对应的是向量的最小值、次小值、第三小值……最大值等(位置索引)

  arrange()函数(需加载dplyr包)针对数据框,返回基于某列排序后的数据框,方便多重依据排序

二、具体用法

1.sort

data <- c(5,6,8,2,9,3)sort(data) # 2 3 5 6 8 9sort(data, decreasing = TRUE) # 9 8 6 5 3 2

2.order

data <- c(5,6,8,2,9,3)order(data) # 4 6 1 2 3 5data[order(data)] # 等同于sort(data)排序
d <- data.frame(  x=c(13,45,13,45,13),  y=c(3,1,2,2,3),  t=c(56,7,68,3,1)) d[order(d$x,d$y),] # x升序 y升序/*  x y  t3 13 2 681 13 3 565 13 3  12 45 1  74 45 2  3*/d[order(-d$x,d$y),] # x降序 y升序/*  x y  t2 45 1  74 45 2  33 13 2 681 13 3 565 13 3  1*/

3.rank

# rank函数rank(x, na.last = TRUE, ties.method = c("average","first","random","max","min"))
data <- c(5,6,8,2,9,3)rank(data) # 3 4 5 1 6 2

(1) rank 函数是对一维度数组、向量x 进行排序。若x 为数值,则按照从小到大的原则进行排序。

P.S. 实际情况中,存在大量用二维表格描述的数据,比如行表示地点列表示时间的统计表,若进行排序,应先通过字符拼接的手段将表格转化为一维的向量,否则结果将失去意义。

(2) rank 将数据分为确定值与缺失值两种。缺失值可按先后排在确定值之间(na.last = FALSE), 也可排在之后(na.last = TRUE), 也可保留,不参与排序(na.last = "keep")。

(3) "first" 是最基本的排序,小数在前大数在后,相同元素先者在前后者在后。

  "max" 是相同元素都取该组中最好的水平,即通常所讲的并列排序。

  "min" 是相同元素都取该组中最差的水平,可以增大序列的等级差异。

  "average" 是相同元素都取该组中的平均水平,该水平可能是个小数。

  "random" 是相同元素随机编排次序,避免了“先到先得”,“权重”优于“先后顺序”的机制增大了随机的程度。

4.arrange(dplyr)

library(dplyr)arrange(mtcars, cyl, disp) # 按 cyl + disp 列进行升序排列mtcars[order(mtcars$cyl,mtcars$disp),] # 同上/*  mpg cyl  disp  hp drat    wt  qsec vs am gear carb1 33.9   4  71.1  65 4.22 1.835 19.90  1  1    4    12 30.4   4  75.7  52 4.93 1.615 18.52  1  1    4    23 32.4   4  78.7  66 4.08 2.200 19.47  1  1    4    14 27.3   4  79.0  66 4.08 1.935 18.90  1  1    4    15 30.4   4  95.1 113 3.77 1.513 16.90  1  1    5    26 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1*/head(arrange(mtcars,cyl,desc(disp)))/*  mpg cyl  disp  hp drat    wt  qsec vs am gear carb1 24.4   4 146.7  62 3.69 3.190 20.00  1  0    4    22 22.8   4 140.8  95 3.92 3.150 22.90  1  0    4    23 21.4   4 121.0 109 4.11 2.780 18.60  1  1    4    24 26.0   4 120.3  91 4.43 2.140 16.70  0  1    5    25 21.5   4 120.1  97 3.70 2.465 20.01  1  0    3    16 22.8   4 108.0  93 3.85 2.320 18.61  1  1    4    1*/

END 2018-11-26 11:48:18

转载于:https://www.cnblogs.com/hider/p/10019536.html

你可能感兴趣的文章
EL表达式
查看>>
5:练习题
查看>>
【转帖】快学正则表达式
查看>>
bzoj 1070: [SCOI2007]修车 -- 费用流
查看>>
Tomcat设计模式
查看>>
BZOJ1041 HAOI2008圆上的整点(数论)
查看>>
GitHub详细教程
查看>>
分布式事务、两阶段提交协议、三阶提交协议
查看>>
差分约束
查看>>
UINavigationCountroller pop到指定界面
查看>>
NoSQL相关数据库
查看>>
安卓扁平化之路专题(四)Material Design
查看>>
案例:音乐列表
查看>>
npm
查看>>
vue-cli安装
查看>>
渐进增强和优雅降级
查看>>
Html和Css学习笔记-css基础知识
查看>>
bzoj1797: [Ahoi2009]Mincut 最小割(网络流,缩点)
查看>>
jq选择器
查看>>
[TJOI2017] 可乐
查看>>