하자 내가 다음이 있다고 가정 data.table
의를 R
:
library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
두 개의 열 (예 : x
및 열 v
) 로 주문하고 싶습니다 . 나는 이것을 사용했다 :
DT[order(x,v)] # sorts first by x then by v (both in ascending order)
하지만 이제는 x
(내림차순으로) 정렬 하고 다음 코드가 있습니다.
DT[order(-x)] #Error in -x : invalid argument to unary operator
따라서이 오류는 class(DT$x)=character
. 이 문제를 해결하기 위해 어떤 제안을 해주시겠습니까?
를 사용할 수 있다는 것을 알고 DT[order(x,decreasing=TRUE)]
있지만 동시에 두 가지 방법 (일부 감소, 일부 증가)을 사용하여 여러 열을 정렬하는 구문을 알고 싶습니다.
사용 DT[order(-y,v)]
하면 결과는 괜찮지 만 사용 DT[order(-x,v)]
하면 오류가 있습니다. 제 질문은이 오류를 해결하는 방법입니다.
6
흥미로운 질문이지만 큰 데이터 세트로 작업하는 경우 data.tables에 대한 키를 설정해야 할 것입니다. 키는 후속 인덱싱, 부분 집합 화, 그룹 별 집계 등을 최대화하는 순서로 데이터를 배치합니다. 이는 데이터를 인쇄하는 데 선호되는 형식 이 아닐 수 있지만 얻을 수있는 속도에 대해 지불하는 것은 종종 적은 비용입니다. .
—
Josh O'Brien
그러나 실제로는 작동 하지만 다른 하나는 작동하지 않기 때문에
—
jeromeResearch
DT[order(-x)]
동일한 진술이 아닌 것으로 보입니다 . 동등한 명령문은 DT <-DT [order (-x)] setorder (DT, -x) R을 처음 접했으므로 실수하면 수정하십시오. setorder(DT, -x)
setorder()
DT
@jerome 당신이 맞습니다. Pankil은 동등하다고 말하지 않았으므로 그대로 괜찮은 것 같아요.
—
프랭크
나는 제목 편집이 의미가 있다는 @smci에 동의하지만,이 질문이 더 이상 관련이 없음을 나타내도록 변경합니다. Google에서 다른 것을 기대하고 여기에 계속 착륙하십시오. 나는 내 질문 중 하나를 가지고 이것을했다. stackoverflow.com/questions/30035939/…
—
Frank
Nestorggh, 개선 할 수없는 경우 새 타이틀을 롤백하지 마십시오. "data.table의 정렬 행"은 거의 아무것도 말하지 않았으며 기본 기능은 yonks에 있습니다. 제목은 실제 문제를 언급해야합니다 (하나가 감소 순서 인 여러 키). 이것은 1.9.4 및 이전 버전에서 알려진 문제였으며 더 이상 문제가되지 않는다는 점도 중요합니다.
—
smci