我正在尝试在数据框中按行对连续值进行排名。例如,从这个数据框
df0 <- data.frame(x1 = rnorm(5, 0.1, 1),
x2 = rnorm(5, 0.0, 1),
x3 = rnorm(5, 0.3, 1),
x4 = rnorm(5, 0.2, 1))
df0
x1 x2 x3 x4
1 2.1540546 -0.95349328 0.06747390 1.4737404
2 0.1284843 -1.41162850 0.02273785 -0.9432357
3 -0.5162803 0.03551863 0.09552951 -0.1144275
4 -0.5455716 0.19596625 -0.71353323 0.3566051
5 0.6864848 0.22596630 0.91770037 -0.4423302
我想获得这个排名(取最低值为 1,第二低为 2,依此类推):
df1_ranked
x1_ranked x2_ranked x3_ranked x4_ranked x5_ranked
1 4 4 1 2 3
2 1 1 3 3 2
3 2 3 4 1 4
4 3 2 2 4 1
我想不出任何简单的解决方案来完成这项任务。非常感谢您的想法!
一种选择是使用apply
循环遍历行 ( MARGIN = 1
) 并使用rank
t(apply(df0, 1, rank))
或rowRanks
从matrixStats
转换为后使用matrix
library(matrixStats)
rowRanks(as.matrix(df0))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句