R 中的混序数据框
Mixedorder data frame in R
我有一个如下所示的数据框:
a = c("1A","10A","11A","2B","2C","22C","3A","3B")
b= c(1,2,3,4,5,6,7,8)
ab = data.frame(a,b)
我想根据 a
列对其进行排序。我试了混合顺序
library(gtools)
ab[mixedorder(ab$a),]
但我没有得到我想要的结果 (1A,2B,2C,3A,3B..)。
我该如何解决这个问题?
我们需要转换为 character
class(因为 'a' 列是 factor
,基于 data.frame
调用中的默认选项,即 stringsAsFactors=TRUE
)
ab[mixedorder(as.character(ab$a)),]
# a b
#1 1A 1
#4 2B 4
#5 2C 5
#7 3A 7
#8 3B 8
#2 10A 2
#3 11A 3
#6 22C 6
其他选项也在
中进行了说明
我只是拆分专栏。如果您想要 ID 的数字部分的数字顺序,您可能应该将这些数字作为数字列。
ab$a1 <- as.numeric(gsub("[[:alpha:]+]", "", ab$a))
ab$a2 <- gsub("\d+", "", ab$a)
ab[order(ab$a1, ab$a2),]
# a b a1 a2
#1 1A 1 1 A
#4 2B 4 2 B
#5 2C 5 2 C
#7 3A 7 3 A
#8 3B 8 3 B
#2 10A 2 10 A
#3 11A 3 11 A
#6 22C 6 22 C
我有一个如下所示的数据框:
a = c("1A","10A","11A","2B","2C","22C","3A","3B")
b= c(1,2,3,4,5,6,7,8)
ab = data.frame(a,b)
我想根据 a
列对其进行排序。我试了混合顺序
library(gtools)
ab[mixedorder(ab$a),]
但我没有得到我想要的结果 (1A,2B,2C,3A,3B..)。 我该如何解决这个问题?
我们需要转换为 character
class(因为 'a' 列是 factor
,基于 data.frame
调用中的默认选项,即 stringsAsFactors=TRUE
)
ab[mixedorder(as.character(ab$a)),]
# a b
#1 1A 1
#4 2B 4
#5 2C 5
#7 3A 7
#8 3B 8
#2 10A 2
#3 11A 3
#6 22C 6
其他选项也在
我只是拆分专栏。如果您想要 ID 的数字部分的数字顺序,您可能应该将这些数字作为数字列。
ab$a1 <- as.numeric(gsub("[[:alpha:]+]", "", ab$a))
ab$a2 <- gsub("\d+", "", ab$a)
ab[order(ab$a1, ab$a2),]
# a b a1 a2
#1 1A 1 1 A
#4 2B 4 2 B
#5 2C 5 2 C
#7 3A 7 3 A
#8 3B 8 3 B
#2 10A 2 10 A
#3 11A 3 11 A
#6 22C 6 22 C