2013-02-13 4 views
1

데이터 프레임 x에 a, b, c 열이 있습니다.데이터 프레임의 2 개 열을 기준으로 데이터 정렬

열 a와 c를 기준으로 데이터를 정렬하려고하고 주문 기준이 오름차순으로오고 내림차순으로 내려갑니다. 아래는 내가 작성한 코드입니다.

z <- x[order(x$a,-x$c),] 

이 코드는 다음과 같이 경고 메시지를 표시합니다. I는 (z) 헤드를 사용하여 데이터 프레임 (Z)를 체크 할 때 또한

Warning message: 
In Ops.factor(x$c) : - not meaningful for factors 

, 그것은 아래와 같이 저 잘못된 데이터를 제공한다 : 처음에이

30708908 0.3918980 NA 
22061768 0.4022183 NA 
21430343 0.4118651 NA 
21429828 0.4134888 NA 
21425966 0.4159323 NA 
22057521 0.4173094 NA 

및 않네의 컬럼 (C)의 임의의 NA 값 데이터 프레임 x. 나는 많은 실을 통과했지만 어떤 해결책도 찾을 수 없었다. 아무나 제발 제안 할 수 있습니다.

+1

열 중 하나가 요인입니다. 'str (x)'를 시도하십시오. as.factor (as.character (x))를 통해 숫자로 변환 할 수 있습니다 (펑키 한 일이 없다고 가정). 나는 또한 읽는 것이 좋습니다 http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example –

+0

@ RomanLuštrik : 당신은'as.numeric (as.character (x))를 의미합니까? 'as.factor'보다는? –

+0

Mea culpa, 그렇습니다. 나는 '숫자'를 의미합니다. 침대로 돌아갈 시간. :) –

답변

1

은, 또는 'X'데이터 프레임 당신을 만드는 동안, 지정 당신이 당신의 프레임을 만들기 전에이

install.packages('plyr'); 
library('plyr'); 
z<-arrange(x,a,desc(c)); 

또한, 당신은

options(stringsAsFactors = FALSE) 

사용할 수 있습니다하려고

stringsAsFactors = FALSE 
+0

@Roman Luštrik : stringsAsFactors = FALSE 옵션을 사용한 후에 위에서 언급 한 방법을 사용 해봤습니다. 그것은 다시 아래 경고 메시지를 내게 NA를 주었다. top <-x [order (x $ a, -as.numeric as ascharacter (x $ c))]] 순서대로 (x $ a, -as.numeric (as.character (X $으로의 c)))의 NA 강압 헤드 (위에서 도입) \t \t B C 30,708,908 22,061,768 0.3918980 0.4022183 NA NA NA 21,430,343 0.4118651 0.4134888 21,429,828 NA 21425966 0.4159323 NA 22057521 0.4173094 NA –

+0

정렬을 사용하면 나에게도 NA를주었습니다. 라이브러리 ("plyr"); Z <-arrange (X, A, DESC (c)) > 헤드 (z) \t \t B C 1 0.3918980 NA NA 2 0.4022183 0.4118651 3 4 0 NA.4134888 NA 5 0.4159323 NA 6 0.4173094 NA –

+0

@DWin : stringsAsFactors = FALSE 옵션을 사용한 후에 위의 방법을 사용하여 시도해 보았습니다. 그것은 다시 아래의 경고 메시지와 함께 나에게 NA를 주었다 : top <-x [order (x $ a, -as.numeric as (char $),)], 순서대로 (x $ a, 숫자 (as.character (X $으로 온도))) : 강제 헤드 (위에서 도입 NAS) \t BC 30,708,908 0.3918980 NA 22,061,768 0.4022183 NA 21,430,343 0.4118651 NA 21,429,828 0.4134888 NA 21,425,966 0.4159323 NA 22,057,521 0.4173094 NA –

1
z <- x[order(x$a,-as.character(x$c)), ] 
z 

로마의 용의자가 y 우리 facttor 수준은 당신은 그가 알 수 있듯이 할 필요 as.numeric을 추가, 그렇지 않으면 9보다 큰 10

z <- x[order(x$a,-as.numeric(as.character(x$c))), ] 
z 

될 것입니다 그러나 그들은 문자를하는 경우, 당신은 다시 모든 NAS를 얻을 것이다, 그래서 정말 성격에 따라 할 수있다 x$c

관련 문제