自然排序以按列名称对数据框的列进行排序
Natural sorting to sort columns of a dataframe by column name
我想按列名排列数据框的列。是否可以使用自然排序来做到这一点?
我的专栏目前按数字排列在以下数据中:
Blockquote
# A1 A10 A11 A12 A2 A3 A4 ...
# 1
# 2
# .
# .
# .
我想重新排列列,以便它们按如下自然排序排列:
# A1 A2 A3 A4 A10 A11 A12 ...
# 1
# 2
# .
# .
# .
请注意,我的数据集很大,有数百列,因此该过程需要自动化。
gtools
包中的 mixedsort
正是这样做的。
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))]
您可以使用 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))
df[,mixedsort(names(df))]
我想按列名排列数据框的列。是否可以使用自然排序来做到这一点?
我的专栏目前按数字排列在以下数据中:
Blockquote
# A1 A10 A11 A12 A2 A3 A4 ...
# 1
# 2
# .
# .
# .
我想重新排列列,以便它们按如下自然排序排列:
# A1 A2 A3 A4 A10 A11 A12 ...
# 1
# 2
# .
# .
# .
请注意,我的数据集很大,有数百列,因此该过程需要自动化。
gtools
包中的 mixedsort
正是这样做的。
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))]
您可以使用 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))
df[,mixedsort(names(df))]