自然排序,按列名

时间:2018-01-17 01:01:44

标签: r sorting natural-sort

我想按列名排列数据框的列。是否可以使用自然分类来做到这一点?

我的专栏目前以数字方式排列在以下数据中:

  

块引用

#   A1 A10 A11 A12 A2 A3 A4 ...
# 1 
# 2 
# .
# .
# .

我想重新排列列,以便按照下面的自然排序进行排列:

#   A1 A2 A3 A4 A10 A11 A12 ...
# 1 
# 2 
# .
# .
# .

请注意,我的数据集非常庞大,有数百个列,因此需要自动完成此过程。

2 个答案:

答案 0 :(得分:1)

mixedsort包中的

gtools就是这样做的。

library(gtools)
CNames = c("A1", "A10", "A11", "A12", "A2", "A3", "A4")
mixedsort(CNames)
[1] "A1"  "A2"  "A3"  "A4"  "A10" "A11" "A12"

当然,要重新排列data.frame,您需要类似

的内容
df = df[,mixedsort(colnames(df))]

答案 1 :(得分:1)

您可以使用gtools包在R中实现自然排序:

install.packages('gtools')
library(gtools)

数据:

df <- data.frame(A1=seq(1:10), A10=seq(1:10), A11=seq(1:10), A12=seq(1:10), A2=seq(1:10), A3=seq(1:10), A4=seq(1:10))

enter image description here

df[,mixedsort(names(df))]

enter image description here