Jiena rank() 的排名默认是从小到大 (第一名是最小值),比如: df1=data.frame(value1=runif(5)) df1$RANK=rank(df1$value1) df1 value1 RANK 1 0.09663374 2 2 0.02199372 1 3 0.99304478 5 4 0.58393885 3 5 0.78182307 4 这里基本上有两个细节要注意: 如果有 NA 的话,na.last = TRUE 就是把 NA 放在最后一名,na.last = F就是把 NA 放在第一名 如果有并列的话,要根据您的需求用 ties.method 这个参数,ties.method= "min" 就是显示并列数值们的最小排名, 如下: df1=data.frame(value1=c(0.01,0.01,runif(5))) df1$RANK=rank(df1$value1,ties.method= "min") df1 value1 RANK 1 0.01000000 1 2 0.01000000 1 3 0.74563622 6 4 0.08537846 3 5 0.30051761 4 6 0.61456216 5 7 0.75293206 7
tctcab nick_judy rank不是这么用的,你可以将字符串转为factor,再转为数组: # not good rank(c("a","b","DSFSDF","a")) #> [1] 1.5 3.0 4.0 1.5 # fine as.numeric(factor(c("a","b","DSFSDF","a"))) #> [1] 1 2 3 1