如何在 R 中对两行字符进行排序



如何按以下顺序对作为两行标签的变量(对(进行排序:

Pair<-c("CA.F - BK.Fn(P-value=0.00)", "CA.M - BK.Mn(P-value=0.00)",
"EA.F - BK.Fn(P-value=0.41)", "EA.F - CA.Fn(P-value=0.00)",
"EA.M - BK.Mn(P-value=0.32)", "EA.M - CA.Mn(P-value=0.33)",
"SA.F - BK.Fn(P-value=0.08)", "SA.F - CA.Fn(P-value=0.00)",
"SA.F - EA.Fn(P-value=0.99)", "SA.M - BK.Mn(P-value=0.95)",
"SA.M - CA.Mn(P-value=0.01)", "SA.M - EA.Mn(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)

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

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")

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

数据:

Pair<-c("CA.F - BK.Fn(P-value=0.00)", "CA.M - BK.Mn(P-value=0.00)",
"EA.F - BK.Fn(P-value=0.41)", "EA.F - CA.Fn(P-value=0.00)",
"EA.M - BK.Mn(P-value=0.32)", "EA.M - CA.Mn(P-value=0.33)",
"SA.F - BK.Fn(P-value=0.08)", "SA.F - CA.Fn(P-value=0.00)",
"SA.F - EA.Fn(P-value=0.99)", "SA.M - BK.Mn(P-value=0.95)",
"SA.M - CA.Mn(P-value=0.01)", "SA.M - EA.Mn(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

做:

ordered = sapply(customOrder, function(x){grep(x,Pair)})

结果:

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.Mn(P-value=0.94)  16  15
11 SA.M - CA.Mn(P-value=0.01)  14  15
6  EA.M - CA.Mn(P-value=0.33)   7  12
10 SA.M - BK.Mn(P-value=0.95)  13  14
5  EA.M - BK.Mn(P-value=0.32)   6  10
2  CA.M - BK.Mn(P-value=0.00)   3   6
9  SA.F - EA.Fn(P-value=0.99)  11  13
8  SA.F - CA.Fn(P-value=0.00)   9  14
4  EA.F - CA.Fn(P-value=0.00)   5   8
7  SA.F - BK.Fn(P-value=0.08)   8  14
3  EA.F - BK.Fn(P-value=0.41)   4   7
1  CA.F - BK.Fn(P-value=0.00)   2   5

最新更新