首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对R中的两行字符排序

如何对R中的两行字符排序
EN

Stack Overflow用户
提问于 2017-08-10 03:00:58
回答 1查看 35关注 0票数 0

如何按以下顺序对变量(对)进行排序,这是两个行标签:

代码语言:javascript
复制
Pair<-c("CA.F - BK.F\n(P-value=0.00)", "CA.M - BK.M\n(P-value=0.00)",
 "EA.F - BK.F\n(P-value=0.41)", "EA.F - CA.F\n(P-value=0.00)",
 "EA.M - BK.M\n(P-value=0.32)", "EA.M - CA.M\n(P-value=0.33)",
 "SA.F - BK.F\n(P-value=0.08)", "SA.F - CA.F\n(P-value=0.00)",
 "SA.F - EA.F\n(P-value=0.99)", "SA.M - BK.M\n(P-value=0.95)",
 "SA.M - CA.M\n(P-value=0.01)", "SA.M - EA.M\n(P-value=0.94)")

lwr<-c(2,3,4,5,6,7,8,9,11,13,14,16)
upr<-c(5,6,7,8,10,12,14,14,13,14,15,15)
Final<-data.frame(Pair,lwr,upr)

我想以这种格式对变量(对)进行排序,并将其作为一个新变量添加到数据集中:

代码语言:javascript
复制
c("SA.M - EA.M","SA.M - CA.M","EA.M - CA.M","SA.M - BK.M", 
"EA.M - BK.M","CA.M - BK.M","SA.F - EA.F","SA.F - CA.F",
"EA.F - CA.F","SA.F - BK.F","EA.F - BK.F","CA.F - BK.F")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-10 03:28:37

我假设您希望根据第二个向量中的标签重新排序Pair。如果是这样,那么您可以执行以下操作:

数据:

代码语言:javascript
复制
Pair<-c("CA.F - BK.F\n(P-value=0.00)", "CA.M - BK.M\n(P-value=0.00)",
"EA.F - BK.F\n(P-value=0.41)", "EA.F - CA.F\n(P-value=0.00)",
"EA.M - BK.M\n(P-value=0.32)", "EA.M - CA.M\n(P-value=0.33)",
"SA.F - BK.F\n(P-value=0.08)", "SA.F - CA.F\n(P-value=0.00)",
"SA.F - EA.F\n(P-value=0.99)", "SA.M - BK.M\n(P-value=0.95)",
"SA.M - CA.M\n(P-value=0.01)", "SA.M - EA.M\n(P-value=0.94)")

customOrder = c("SA.M - EA.M","SA.M - CA.M","EA.M - CA.M","SA.M - BK.M",
"EA.M - BK.M","CA.M - BK.M","SA.F - EA.F","SA.F - CA.F",
"EA.F - CA.F","SA.F - BK.F","EA.F - BK.F","CA.F - BK.F")

向量customOrder是您想要订购Pair的方式。

Do:

代码语言:javascript
复制
ordered = sapply(customOrder, function(x){grep(x,Pair)})

结果:

代码语言:javascript
复制
lwr<-c(2,3,4,5,6,7,8,9,11,13,14,16)
upr<-c(5,6,7,8,10,12,14,14,13,14,15,15)
Final<-data.frame(Pair,lwr,upr)

Final[ordered,]

                          Pair lwr upr
12 SA.M - EA.M\n(P-value=0.94)  16  15
11 SA.M - CA.M\n(P-value=0.01)  14  15
6  EA.M - CA.M\n(P-value=0.33)   7  12
10 SA.M - BK.M\n(P-value=0.95)  13  14
5  EA.M - BK.M\n(P-value=0.32)   6  10
2  CA.M - BK.M\n(P-value=0.00)   3   6
9  SA.F - EA.F\n(P-value=0.99)  11  13
8  SA.F - CA.F\n(P-value=0.00)   9  14
4  EA.F - CA.F\n(P-value=0.00)   5   8
7  SA.F - BK.F\n(P-value=0.08)   8  14
3  EA.F - BK.F\n(P-value=0.41)   4   7
1  CA.F - BK.F\n(P-value=0.00)   2   5
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45603722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档