【问题标题】:Sort columns by names (only specific columns)按名称对列进行排序(仅限特定列)
【发布时间】:2022-09-27 22:18:51
【问题描述】:

例如我有这样的数据框:

test = data.frame(C = c(0, 2, 4, 7, 8), A = c(4, 2, 4, 7, 8), B = c(1, 3, 8, 3, 2), Z = c(6, 7, 3, 3, 1), D = c(1, 8, 9, 9, 5))

我只想按名称对最后 3 列进行排序。我试试这个,但它不工作:

test[3:5] <- test[3:5][ , order(names(test[3:5]))]

结果应该是这样的:

C     A     B     D     Z
0     4     1     1     6
2     2     3     8     7
...   ...   ...   ...   ...

    标签: r dataframe


    【解决方案1】:

    通过dplyr::select() 的一种选择

    dplyr::select(test, names(test)[1:2], sort(names(test)[3:5]))
    

    输出

     C A B D Z
    1 0 4 1 1 6
    2 2 2 3 8 7
    3 4 4 8 9 3
    4 7 7 3 9 3
    5 8 8 2 5 1
    

    【讨论】:

      【解决方案2】:

      在基础 R 中:

      test[, c(names(test)[1:(ncol(test) - 3)], sort(names(test)[(ncol(test) - 2):ncol(test)]))]
      #  C A B D Z
      #1 0 4 1 1 6
      #2 2 2 3 8 7
      #3 4 4 8 9 3
      #4 7 7 3 9 3
      #5 8 8 2 5 1
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-08
        • 1970-01-01
        • 2022-12-17
        • 2019-11-04
        • 2014-07-03
        • 2017-04-08
        相关资源
        最近更新 更多