在R中按降序对列进行排序,不包括第一行

Sorting a column in descending order in R excluding the first row

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

示例输出:

原文:

4
7
9
6
8

新:

4
9
8
7
6

谢谢!

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

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), .)
df$x[-1] <- df$x[-1][order(df$x[-1], decreasing=T)]
#   x
# 1 4
# 2 9
# 3 8
# 4 7
# 5 6

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

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