【问题标题】:Sorting a column in descending order in R excluding the first row在R中按降序对列进行排序,不包括第一行
【发布时间】:2015-09-28 00:50:42
【问题描述】:

我有一个包含 5 列的数据框和一个非常大的数据集。我想按第 3 列排序。如何对第一行之后的所有内容进行排序? (调用此函数时,我想以 nrows 结束)

示例输出:

原文:

4
7
9
6
8

新:

4
9
8
7
6

谢谢!

【问题讨论】:

    标签: r sorting row


    【解决方案1】:

    如果我正确理解你想要做什么,这种方法应该有效:

    z <- data.frame(x1 = seq(10), x2 = rep(c(2,3), 5), x3 = seq(14, 23))
    zsub <- z[2:nrow(z),]
    zsub <- zsub[order(-zsub[,3]),]
    znew <- rbind(z[1,], zsub)
    

    基本上,剪掉要排序的行,在第 3 列按降序对它们进行排序,然后重新附加第一行。

    这是一个使用dplyr 的管道版本,因此您不会用额外的对象使工作区混乱:

    library(dplyr)
    z <- z %>%
        slice(2:nrow(z)) %>%
        arrange(-x3) %>%
        rbind(slice(z, 1), .)
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用这行代码来修改数据框df 中的第三列,如下所述:

      df[,3] <- c(df[1,3],sort(df[-1,3]))
      

      【讨论】:

        【解决方案3】:
        df$x[-1] <- df$x[-1][order(df$x[-1], decreasing=T)]
        #   x
        # 1 4
        # 2 9
        # 3 8
        # 4 7
        # 5 6
        

        【讨论】:

          猜你喜欢
          • 2020-01-01
          • 1970-01-01
          • 2013-06-30
          • 1970-01-01
          • 2017-02-17
          • 2022-01-15
          • 2011-03-25
          • 1970-01-01
          相关资源
          最近更新 更多