> dput(dat)
structure(list(MEMORY1 = c(1, 1, 1, 1), MEMORY2 = c(2, 2, 2,
2), MEMORY3 = c(3, 3, 3, 3), MEMORY4 = c(4, 4, 4, 4), MEMORY5 = c(5,
5, 5, 8), MEMORY6 = c(6, 6, 8, 5), MEMORY7 = c(7, 8, 6, 6), MEMORY8 = c(8,
7, 7, 7)), .Names = c("MEMORY1", "MEMORY2", "MEMORY3", "MEMORY4",
"MEMORY5", "MEMORY6", "MEMORY7", "MEMORY8"), row.names = c(NA,
4L), class = "data.frame")
> dat
MEMORY1 MEMORY2 MEMORY3 MEMORY4 MEMORY5 MEMORY6 MEMORY7 MEMORY8
1 1 2 3 4 5 6 7 8
2 1 2 3 4 5 6 8 7
3 1 2 3 4 5 8 6 7
4 1 2 3 4 8 5 6 7
假设我有以上data.frame
,并且每个条目都是MEMORY项目的等级。因此,对于第二行,MEMORY1
排名为1,MEMORY2
排名为2,... MEMORY8
排名为7,等等。
我想根据MEMORY项目的排名重新排序data.frame
的每一行。
第1行只会保持不变1 2 3 4 5 6 7 8
第2行应为1 2 3 4 5 6 8 7
,因为MEMORY8
排在MEMORY7
之前
第3行应为1 2 3 4 5 7 8 6
第4行应为1 2 3 4 6 7 8 5
如何编写代码,以便在传入dat
后,输出看起来像
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 1 2 3 4 5 6 7 8
[2,] 1 2 3 4 5 6 8 7
[3,] 1 2 3 4 5 7 8 6
[4,] 1 2 3 4 6 7 8 5
答案 0 :(得分:3)
t(apply(dat, 1, order))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
1 1 2 3 4 5 6 7 8
2 1 2 3 4 5 6 8 7
3 1 2 3 4 5 7 8 6
4 1 2 3 4 6 7 8 5