【问题标题】:Order columns based on max value in columns - R dataframe arranging根据列中的最大值对列进行排序 - R 数据框排列
【发布时间】:2020-11-10 15:21:11
【问题描述】:

我有以下数据框:

x <- data.frame("A" = c(NA, NA, 3:10, NA), "B" = c(NA,2:11), "C" = c(2:12))

如何根据每行中的最大值对 R 中的列重新排序。所以这里的列顺序应该是

C, B, A

因为最大值在col C,下一个最大值在col B,最后一个最大值在col A。

我有一个庞大的数据框,需要自动执行此操作。

谢谢

【问题讨论】:

    标签: r dataframe sorting multiple-columns


    【解决方案1】:

    这是否工作,使用基础 R:

    x[names(sort(sapply(x, max, na.rm = T), decreasing = T))]
        C  B  A
    1   2 NA NA
    2   3  2 NA
    3   4  3  3
    4   5  4  4
    5   6  5  5
    6   7  6  6
    7   8  7  7
    8   9  8  8
    9  10  9  9
    10 11 10 10
    11 12 11 NA
    

    【讨论】:

      【解决方案2】:

      我想这就是你想要的。

      x <- data.frame("A" = c(NA, NA, 3:10, NA), "B" = c(NA,2:11), "C" = c(2:12))
      maxx <- sapply(x, function(x) max(x,na.rm = TRUE))
      result <- x[,order(-maxx)]
      result
          C  B  A
      1   2 NA NA
      2   3  2 NA
      3   4  3  3
      4   5  4  4
      

      【讨论】:

        【解决方案3】:

        这样的解决方案行得通吗?

        x %>% dplyr::arrange(-C,-B,-A)
        

        x %>% dplyr::arrange(desc(C,B,A))
        

        另请参阅问题:[dplyrarrange() 函数按缺失值排序] (dplyr arrange() function sort by missing values)

        【讨论】:

          猜你喜欢
          • 2020-08-04
          • 2018-10-17
          • 2022-12-18
          • 2019-10-14
          • 2020-05-15
          • 2021-10-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多