我有一个DF$vector
,如下所示:
A10 A50
C1 C4
B1
A7
C3
B1 B4
我想方设法订购如下:
A10 A50
A7
B1 B4
B1
C1 C4
C3
我尝试使用gsub
:
vector[order(gsub("([A-Z]+)([0-9]+)", "\\1", vector),
as.numeric(gsub("([A-Z]+)([0-9]+)", "\\2", vector)))]
但它没有归还我想要的东西。 感谢您的任何建议。
答案 0 :(得分:1)
我们可以使用order
base R
df1[order(sub("\\d+", "", df1[,1]), as.numeric(sub("\\D+", "", df1[,1])), df1[,2] == ""),]
# A10 A50
#3 A7
#5 B1 B4
#2 B1
#1 C1 C4
#4 C3
df1 <-structure(list(A10 = c("C1", "B1", "A7", "C3", "B1"), A50 = c("C4",
"", "", "", "B4")), .Names = c("A10", "A50"), class = "data.frame",
row.names = c(NA, -5L))
答案 1 :(得分:0)
在编程语言中,字母被认为在数量上正在增加。因此,A
被认为 <{1}}等。因此,要订购以上内容,只需使用代码:
B