2015-09-15 4 views
0
> 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 и т.д.R: перестраивающие векторы на основе ранга

Я хочу, чтобы изменить порядок каждой строки data.frame на основе ранжирования элементов памяти.

Row 1 просто остаться один и тот же 1 2 3 4 5 6 7 8

Row 2 должна быть 1 2 3 4 5 6 8 7 потому что MEMORY8 занимает до того MEMORY7

Row 3 должен быть 1 2 3 4 5 7 8 6

Row 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 

ответ

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 
Смежные вопросы