建议用if条件句,或者BASE中原始方法修改。
ifelse个人觉得嵌套两个最优。再多必然晕。
用order函数数字从大到小,所以是倒序列,开启order中的倒序模式会导致所有关联的sort都是倒序,我们得用一个小技巧:负号。(order的作用是帮你拿到行的index,如此所有排序都是关联的。)
假如你数据叫data
data <- data[order(-data[[2]], data[[1]]), ]data
如此你的第二列数字会是取了相反数再sort,所以是倒序,而第一列是正排序,按照字母表顺序。
放在第一个位置的data[[2]]就是主条件,在后面的是次条件,次次条件。。。
使用R包dplyr的函数arrange更简单,更简洁:
#多条件排序:使用dplyr::arrange
library(dplyr)
data("iris")
head(iris)
#第一列升序,然后是第三列升序
arrange(iris,iris[,1],iris[,3])
#第一列升序,然后是第三列降序
arrange(iris,iris[,1],-iris[,3])
扩展资料
R语言排序函数sort(),rank(),order()
>x<-c(97,93,85,74,32,100,99,67)
>sort(x)
[1]32677485939799100
>order(x)
[1]58432176
>rank(x)
[1]65431872