2016-06-12 5 views
0

두 번째 행으로 행렬 또는 데이터 프레임을 정렬하려고합니다. 나는 길을 찾는다.특정 행별로 정렬 행렬 또는 데이터 프레임

tt<-c(3,2,3,5,3,5,5,4,3,1,5,2,1,5,4,1,3,5,3,3) 
ff<-matrix(tt,nrow=5) 
gg<-t(ff) 
nn<-gg[order(gg[,2],decreasing = T),] 
ff<-t(nn) 
ff 

어떤 대안이나 제안이 있습니까?

+0

내가 아는 한 '주문'은 기본 R에서의 이러한 작업에 선호되는 방법입니다. 여러 행으로 정렬하는데도 사용할 수 있습니다. "거대한"(> 1GB 데이터 세트)로 작업한다면,'data.table' 패키지와'setkey' 함수를 살펴보십시오. – lmo

답변

3

두 번째 행으로 행렬을 정렬하기 위해 반드시 행렬을 조 변경하지 않아도됩니다. 열 인덱스에서 두 번째 행에 따라 순서를 지정해도 작동해야합니다.

ff[,order(ff[2,], decreasing = T)] 
    [,1] [,2] [,3] [,4] 
[1,] 5 1 3 5 
[2,] 5 3 2 2 
[3,] 4 5 3 1 
[4,] 3 3 5 5 
[5,] 1 3 3 4 
+1

downvoted 이유는 확실하지 않습니다. OP의 예상 결과와 일치하고보다 직설적 인 것 같습니다. – thelatemail

+0

고맙습니다. 내 실수는'ff [order (ff [2,], reduced = T)] ' – imi

+0

@thelatemail이었다. 나는 그 질문이 매우 정상적으로 보였고 매우 표준적인 방법으로 대처할 수 있다고 생각한다. 그러나 그것은 또한 사람들이 그것을 간과 할 수 있습니다. 때로는 독립적으로 행을 정렬하거나 행별로 정렬하거나 독립적으로 열을 정렬하는 것과 행렬로 일어날 수있는 열을 기준으로 정렬하는 것 사이에 다소 혼란 스럽습니다. 그러나 data.frame 클래스를 계속 유지하려면 데이터 프레임에서 열을 기준으로 정렬하는 유일한 작업이 발생할 수 있습니다. – Psidom

관련 문제