在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]))
我有一个包含 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]))