返回r中数据帧中排序的行方向值的索引

时间:2017-09-21 09:37:14

标签: r sorting indexing apply

我有一个像这样的样本数据集:

set.seed(12)
df1 = data.frame(matrix(sample(1:100, replace = F), ncol=5))
head(df1, n=4)

  X1 X2 X3 X4 X5
1  7 18 90 30 66
2 81 63 72 70 86
3 93  8 57 74 53
4 27 82 12 56 41

我的目标是获取从最大到最小的值的索引,逐行查找。换句话说,预期的输出应该是这样的:

  X1  X2 X3 X4 X5
1  3  5  4  2  1
2  5  1  3  4  2
3  1  4  3  5  2
4  2  4  5  1  3 

编辑:只是为了澄清,结果数据框包含指向原始数据帧中从最大到最小的值的索引。

例如,查看第一行,3表示列的索引,其中包含df1中第一行中的最大值,而1表示包含df1中第一行中最小值的列的索引。

编辑2:data.frame(t(apply(df1, 1, order, decreasing = TRUE))) Axeman 建议的正确答案。

1 个答案:

答案 0 :(得分:-1)

您可以尝试这种方式:

按行获取递减顺序

df2 <- apply(df1, 1, order, decreasing = TRUE)

转置结果以匹配原始格式

df2 <- t(df2)

结果是一个矩阵,让我们将其转换为数据框

df2 <- data.frame(df2)
head(df2, n=4)