在R base中的数据框中按行对数值进行排名

克里斯·鲁勒曼

我正在尝试在数据框中按行对连续值进行排名。例如,从这个数据框

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))

rowRanksmatrixStats转换为后使用matrix

library(matrixStats)
rowRanks(as.matrix(df0))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

按R中的列组长度对数据框进行排序

在R中按类型对数据进行排序

如何按R中的另一个数据框对数据框中的列顺序进行排序?

如何使用R对数据框中的特定行求和?

在R中按特定顺序对数据进行排序

如何按R中每列的最后一个值对数据框中的列进行重新排序

在R中逐行对数据框的列进行重新排序

在R中逐行对数据框的列进行重新排序

R:在data.frame中对数字数据进行排名

如何按r中的时差对数据进行分组?

按R中的多个列(一组较大的列)对数据框进行排序

在R中对数据框进行双重排序

在R中的列表中对数据框进行排序

按R中的ALL列对数据框进行排序

如何按R中的列名对数据框进行排序?

如何在R中按行对数据帧进行排序,然后将其拆分为多个数据帧?

R:对数据框中的行进行重新排序

基于 R 中的相似性对数据框中的行/列进行子设置

按日期(包括列标题)对数据框列进行分组,并总结 R 中 1 和 0 的实例

按 R 中数据框的行绘制

如何对 R 数据框中的唯一值进行排名

使用 r 中的一行对数据框进行分组

按 R 中的最小列值对数据框列表进行排序

R:按字母数字列对数据框中的所有列进行排序

按R中数据框中的每一列计算排名

在 R 中按列对数据框进行分组

按 R 中的连续值对数据框行进行分组

如何按r中数据框中的行对数字数据进行排名?

在 r 中按日期对数据框顺序应用方程