我相信大家经常会使用Excel对数据进行排序。有时候我们会按照两个条件来对数据排序。假设我们手上有下面这套数据,9个人,第二列(score)为他们的考试成绩,第三列(code)为对应的评级。80分以上为优秀,60-80为良,60以下为差。
我们可以按照code对这9个人进行排序,并且还可以再进一步在每一个评级里面再继续根据分数排序。在Excel里面其实还是很容已实现的。我们只需要先根据code来进行升序排序,然后次要关键字再根据分数进行降序排序。
我们就会得到如下结果
那么这个过程怎么在R里面实现呢?今天我们就来探讨一下。主要用的是R中的order这个函数。
#读入文件,data.txt中存放的数据为以上表格中展示的数据
file=read.table(file="data.txt",header=T,sep="\t")
#先按照code升序,再按照Score升序
View(file[order(file$Code,file$Score),])
下面是按照code升序,即字母顺序,然后再按score升序排列的结果
#先按照code升序,再按照Score降序,只需要前面加个负号就可以了
View(file[order(file$Code,-file$Score),])
下面是按照code升序,然后再按score降序排列的结果,是不是跟Excel处理的结果一样
在R里面我们还可以指定code按照一定的顺序来排列
#按照指定的因子顺序排序,先good,在excellent,最后poor
file$Code <- factor(file$Code , levels = c("good", "excellent","poor"))
#先按照code的指定顺序排序,再按照Score降序
View(file[order(file$Code,-file$Score),])
会得到如下结果。
你学废了了吗~