【问题标题】:how to sort data frame by column names in R?如何按R中的列名对数据框进行排序?
【发布时间】:2016-07-28 01:08:45
【问题描述】:

如何将下面的数据框df 排序为df1

df
a1 a4 a3 a5 a2

排序后的数据框

df1
a1 a2 a3 a4 a5

【问题讨论】:

标签: r


【解决方案1】:

我们可以从library(gtools)使用mixedorder

library(gtools)
df1 <- df[mixedorder(colnames(df))]
df1
#   a1 a3 a9 a10
#1  1  3  1   2
#2  2  4  2   3
#3  3  5  3   4
#4  4  6  4   5
#5  5  7  5   6

数据

df <- data.frame(a1 = 1:5, a10=2:6, a3 = 3:7, a9= 1:5)

【讨论】:

    【解决方案2】:

    在基数R 中,假设colnames 中的数字不包含两位数。

    df
    #  a1 a4 a3 a5 a2
    #1  1  4  3  5  2
    
    df[, order(names(df))]
    #  a1 a2 a3 a4 a5
    #1  1  2  3  4  5
    

    【讨论】:

    • 我不确定这是否足够安全。例如order(c("a2", "a10")) 会给出错误的顺序。
    【解决方案3】:

    假设列名后缀的数字中没有“洞”,您也可以使用 dplyr: library(dplyr) df1 <- select(df, num_range("a", 1:4))

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2021-10-29
      • 2011-11-12
      • 1970-01-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多