2012-05-26 2 views
1

이전 칼럼에 따라 데이터 프레임의 순서를 정렬 새로운 열 생성 :나 데이터 프레임과 같이이

A  B  C  
1 1 1 0.4519 
2 101 1 0.3819 
3 201 1 0.3819 
4 301 1 0.2819 
5 401 1 0.9819 
6 501 1 0.6819 

이 더 크다하지만 그 일례를이다.

(1 until nrow(df)) 숫자를 포함 order라는 새로운 항목을 생성 할과는 C 열의 값에 따라 증가 (최소값 1과 C 값이 증가함에 따라 증가). C 열의 값이 같은 경우 순서 열을 A 열로 변경하고 A 열의 값이 같으면 열 B으로 변경합니다.

이것은 R에서 쉽고 효율적인 방법으로 수행 할 수 있습니까?

데이터 프레임에서 for 루프를 사용하여 일부 if 문을 만들 수 있지만 완료하는 데 많은 시간이 걸립니다. 가능

당신에게

답변

3

감사 있다면 당신은 여러 열을 기준으로 데이터를 정렬 할 order를 사용할 수있는 빠른 대안이 필요한 이유입니다. order 문서에 따르면

첫번째 벡터 관계의 경우, 제 2의 값의 관계를 파괴하는 데 이다. 여전히 값이 연결되어있는 경우 의 값은 이후 인수를 사용하여 연결을 끊습니다.

이 샘플 데이터 프레임 같습니다

df <- data.frame(list(A=c(1, 101, 201, 301, 401, 501), 
         B=rep(1, 6), 
         C=c(0.45, 0.38, 0.38, 0.28, 0.98, 0.68))) 

그리고 이것은 당신이 원하는 순서에 따라 데이터 프레임에 새로운 열을 생성하는 코드입니다 :

df$order <- order(df$C, df$A, df$B) 
+0

이 감사를 ,이 내 문제를 해결 – ifreak

+0

이것은 올바른 답변을 제공하지 않습니다, 난 (더 이상 같은 가치를 포함하지 않습니다) B 조에 몇 가지 변경 사항을 만들었지 만 순서의 값이 정확하지 않습니다 .. – ifreak

+0

당신은 작은 예제를 추가 할 수 있습니까 승 여기에 실패 했나요? – betabandido