【问题标题】:Natural sorting to sort columns of a dataframe by column name自然排序以按列名对数据框的列进行排序
【发布时间】:2018-06-25 19:21:56
【问题描述】:

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

我的列目前在来自以下数据的数据中按数字排列:

块引用

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

我想重新排列这些列,以便它们按如下自然排序排列:

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

请注意,我的数据集非常庞大,包含数百列,因此该过程需要自动化。

【问题讨论】:

    标签: r sorting natural-sort


    【解决方案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))]
    

    【讨论】:

      【解决方案2】:

      您可以使用 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))]
      

      【讨论】:

        猜你喜欢
        • 2011-11-12
        • 2010-11-20
        • 1970-01-01
        • 2023-03-13
        • 2018-03-18
        相关资源
        最近更新 更多