我有一个像这样的样本数据集:
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 建议的正确答案。
答案 0 :(得分:-1)
您可以尝试这种方式:
按行获取递减顺序
df2 <- apply(df1, 1, order, decreasing = TRUE)
转置结果以匹配原始格式
df2 <- t(df2)
结果是一个矩阵,让我们将其转换为数据框
df2 <- data.frame(df2)
head(df2, n=4)