2017-11-27 2 views
-1

고유 한 행 이름 (x)을 기준으로 두 개의 열 (y - 오름차순 및 z - 내림차순)에 따라 주문하고자하는 R 데이터 프레임이 있습니다.고유 한 값을 기반으로 두 개의 열에 데이터 프레임을 주문하십시오.

x y z 
x1262 0.1222 0.5422 
x1262 9.222 0.0233 
x1262 1.2282 1.7453 
x1263 0.1111 0.3739 
x1263 0.3223 2.3288 
x1264 0.9222 0.1122 
x1265 0.3333 0.3367 

나는이 dataframe이 같은 것입니다 :

x y z 
x1262 9.222 0.0233 
x1262 1.2282 1.7453 
x1262 0.1222 0.5422 
x1263 0.3223 2.3288 
x1263 0.1111 0.3739 
x1264 0.9222 0.1122 
x1265 0.3333 0.3367 

여기에 일을하지 않는 내 시도이다 :

df[order(df$y,-df$z, decreasing = TRUE) %in% unique(rank(df$x)), ] 

수있는 사람의 도움을주십시오은? 감사합니다.

+1

사과! 코드를 추가하는 것을 잊어 버렸습니다. 나는 열 x에있는 요소를 의미했습니다. – user27976

답변

1

당신은 X 아이디 내에서 정렬 한 후 Y의 감소 정렬 -y를 사용하도록 order 기능에 열 X를 포함 할 수 있습니다. 는 x 열이 어떤 특별한 순서에 있었고, 경우에 당신은 당신이 먼저 원하는 순서를 인코딩하는 요인 수준을 변경하지 않는 한 다음이 코드가 작동하지 않을 순서를 보존하고 싶다고

dat[with(dat, order(x, -y, z)),] 
     x  y  z 
2 x1262 9.2220 0.0233 
3 x1262 1.2282 1.7453 
1 x1262 0.1222 0.5422 
5 x1263 0.3223 2.3288 
4 x1263 0.1111 0.3739 
6 x1264 0.9222 0.1122 
7 x1265 0.3333 0.3367 

참고.

+0

감사합니다. @Imo. 그것은 나를 위해 완벽하게 작동합니다. – user27976

-1

이 방법이 유용합니까?

library(dplyr) 
df <- df %>% 
arrange(x, desc(y)) 
관련 문제