前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【R语言】数据框按两列排序

【R语言】数据框按两列排序

作者头像
生信交流平台
发布2022-09-21 17:50:32
2.2K0
发布2022-09-21 17:50:32
举报

我相信大家经常会使用Excel对数据进行排序。有时候我们会按照两个条件来对数据排序。假设我们手上有下面这套数据,9个人,第二列(score)为他们的考试成绩,第三列(code)为对应的评级。80分以上为优秀,60-80为良,60以下为差。

Name

Score

Code

lily

90

excellent

lucy

85

excellent

jim

78

good

sam

46

poor

tom

74

good

peter

56

poor

grace

69

good

tim

98

excellent

kit

56

poor

我们可以按照code对这9个人进行排序,并且还可以再进一步在每一个评级里面再继续根据分数排序。在Excel里面其实还是很容已实现的。我们只需要先根据code来进行升序排序,然后次要关键字再根据分数进行降序排序。

我们就会得到如下结果

那么这个过程怎么在R里面实现呢?今天我们就来探讨一下。主要用的是R中的order这个函数。

代码语言:javascript
复制
#读入文件,data.txt中存放的数据为以上表格中展示的数据
file=read.table(file="data.txt",header=T,sep="\t")

#先按照code升序,再按照Score升序
View(file[order(file$Code,file$Score),])

下面是按照code升序,即字母顺序,然后再按score升序排列的结果

代码语言:javascript
复制
#先按照code升序,再按照Score降序,只需要前面加个负号就可以了
View(file[order(file$Code,-file$Score),])

下面是按照code升序,然后再按score降序排列的结果,是不是跟Excel处理的结果一样

在R里面我们还可以指定code按照一定的顺序来排列

代码语言:javascript
复制
#按照指定的因子顺序排序,先good,在excellent,最后poor
file$Code <- factor(file$Code , levels = c("good", "excellent","poor"))
#先按照code的指定顺序排序,再按照Score降序
View(file[order(file$Code,-file$Score),])

会得到如下结果。

你学废了了吗~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信交流平台 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档