R语言学习笔记:sort、rank、order、arrange排序函数
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 9
sort(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 5
data[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 t
3 13 2 68
1 13 3 56
5 13 3 1
2 45 1 7
4 45 2 3
*/ d[order(-d$x,d$y),] # x降序 y升序
/*
x y t
2 45 1 7
4 45 2 3
3 13 2 68
1 13 3 56
5 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 carb
1 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
2 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
3 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
4 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
5 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
6 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 carb
1 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
2 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
3 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
4 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
5 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
6 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
*/
END 2018-11-26 11:48:18
R语言学习笔记:sort、rank、order、arrange排序函数的更多相关文章
- R语言学习笔记(七): 排序函数:sort(), rank(), order()
sort() sort()函数直接对函数进行排序,并返回排序结果. > a <- c(12,4,6,5) > sort(a) [1] 4 5 6 12 rank() rank()函数 ...
- R语言学习笔记 (入门知识)
R免费使用:统计工具:# 注释,行注释块注释:anything="这是注释的内容"常用R语言编辑器:Rsutdio,Tinn-R,Eclipse+StatET:中文会有乱码帮助:? ...
- R语言学习笔记:基础知识
1.数据分析金字塔 2.[文件]-[改变工作目录] 3.[程序包]-[设定CRAN镜像] [程序包]-[安装程序包] 4.向量 c() 例:x=c(2,5,8,3,5,9) 例:x=c(1:100) ...
- R语言学习笔记之: 论如何正确把EXCEL文件喂给R处理
博客总目录:http://www.cnblogs.com/weibaar/p/4507801.html ---- 前言: 应用背景兼吐槽 继续延续之前每个月至少一次更新博客,归纳总结学习心得好习惯. ...
- R语言学习笔记(二)
今天主要学习了两个统计学的基本概念:峰度和偏度,并且用R语言来描述. > vars<-c("mpg","hp","wt") &g ...
- R语言学习笔记:小试R环境
买了三本R语言的书,同时使用来学习R语言,粗略翻下来感觉第一本最好: <R语言编程艺术>The Art of R Programming <R语言初学者使用>A Beginne ...
- R语言学习笔记——C#中如何使用R语言setwd()函数
在R语言编译器中,设置当前工作文件夹可以用setwd()函数. > setwd("e://桌面//")> setwd("e:\桌面\")> s ...
- R语言学习笔记-机器学习1-3章
在折腾完爬虫还有一些感兴趣的内容后,我最近在看用R语言进行简单机器学习的知识,主要参考了<机器学习-实用案例解析>这本书. 这本书是目前市面少有的,纯粹以R语言为基础讲解的机器学习知识,书 ...
- R语言学习笔记(一)
1.不同的行业对数据集(即表格)的行和列称谓不同,统计学家称其为观测(observation)和变量(variable): 2.R语言存储数据的结构: ①向量:类似于C语言里的一位数组,执行组合功能的 ...
随机推荐
- Docker集群管理Swarm数据持久化
一.前言 和docker容器一样,Swarm集群中运行的服务也能够做数据持久化.我们可以通过volume.bind和nfs等方式来实现swarm集群应用数据的持久化.其实和docker数据持久化的形式 ...
- shell实例浅谈之一产生随机数七种方法
一.问题 Shell下有时需要使用随机数,在此总结产生随机数的方法.计算机产生的的只是“伪随机数”,不会产生绝对的随机数(是一种理想随机数).伪随机数在大量重现时也并不一定保持唯一,但一个好的伪随机产 ...
- BIO、NIO、AIO三者的比较
消息时的系统通信,通常基于网络协议实现.常见的协议包括TCP/IP,UDP/IP. TCP/IP等协议用于数据传输,但要完成通信,还需要对数据进行处理.例如读取和写入数据. I/O可以分为两种:同步I ...
- Shell记录-Shell命令(定时任务)
在Linux系统中, at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron(crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因 ...
- java字节码文件 helloworld
Java代码 \\A.java public class A{} 1 2 1 2 javac A.java \\得到 A.class javap -v A.class 下面是javap工具帮我们生成的 ...
- Rolling in the Deep (Learning)
Rolling in the Deep (Learning) Deep Learning has been getting a lot of press lately, and is one of t ...
- 一、Kafka初认识
一.kafka使用背景 1.Kafka使用背景 在我们大量使用分布式数据库.分布式计算集群的时候,是否会遇到这样的一些问题: 我们想分析下用户行为(pageviews),以便我们设计出更好的广告位 我 ...
- CSS3实战之content
为元素添加内容 content属性术语内容生成和替换模块,该属性能够为指定元素添加内容. 取值如下 normal:默认值 string:文本内容 attr():插入元素的属性值 uri():插入一个外 ...
- php检测文件编码方法[非完美]
关于文件编码的检测,百度一下一大把都是,但是确实没有能用的. 很多人建议 mb_detect_encoding 检测,可是不知为何我这不成功,什么都没输出. 看到有人写了个增强版,用 BOM 判断的, ...
- 转载http中302与301的区别
http://blog.csdn.net/qmhball/article/details/7838989 一.官方说法301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之处在于 ...