2012-08-27 6 views
5

은 내가 dataframe에 다음과 같은 데이터를 가지고 :특정 행의 값에 따라 열을 재정렬하십시오.

aa bb cc 
1 3 4 5 
2 5 4 3 
3 7 8 6 
.. 
100 33 63 55 

내가 마지막 행의 값에 따라 열을 다시 정렬 할 필요가있다. 이러한 변화의 결과는 다음과 같습니다

bb cc aa 
1 4 5 3 
2 4 3 5 
3 8 6 7 
... 
100 63 55 33 

답변

6
x <- structure(list(aa = c(3L, 5L, 7L, 33L), bb = c(4L, 4L, 8L, 63L), 
    cc = c(5L, 3L, 6L, 55L)), .Names = c("aa", "bb", "cc"), 
    class = "data.frame", row.names = c("1", "2", "3", "100")) 
x[,order(-x[nrow(x),])] 
+0

감사합니다. -x [nrow ...]가 무엇을하고 있는지 설명 할 수 있습니다. – learner

+3

'x [nrow (x),]'마지막 행을 반환합니다 ...'-x [nrow (x),]'is 반대쪽에 있으므로 원하는 순서대로 정렬됩니다. 'x [, order (x [nrow (x),], decline = TRUE)]'대신에''x '를 사용할 수 있었지만, 나는 더 적은 타이핑을 선호했다. :) –

1

당신이 행 이름을 기준으로 정렬 할 경우에 여호수아 울리히의 대답에 빌딩이 아닌 번호 :

x[, order(-x[which(rownames(x) == '100'), ]) ] 

100 위의 예에서와 같이 행 이름입니다.

관련 문제