키가 x
및 y
인 data.table이 있고 각 키 내에서 z
열로 정렬하려고합니다.각 키 내의 열로 데이터 테이블 정렬
> DT
x y z
1: a a 0.5526312
2: a a 0.6339102
3: a a -0.7490821
4: a a -0.6850176
5: a a 1.7943156
6: a b 0.9271090
7: a b 1.3936642
8: a b 1.4815404
9: a b -0.7850981
10: a b -1.0487700
11: b c 1.5184297
12: b c -0.4640705
13: b c -0.6513462
14: b c -0.5568319
15: b c 1.5422990
16: b d 0.8810654
17: b d -0.1895812
18: b d -2.6263378
19: b d 0.7371594
20: b d 1.4122076
내 첫 번째 시도는 그러나,이 정렬 된 키 입력 열을 유지하지 않습니다, DT[order(z), .SD, by = list(x, y)]
입니다. 나는 두 단계에서이 작업을 수행 할 수 있습니다 알고 : 당신은 키가 정렬 될 때 열 z
이 정렬 상태로 유지됩니다 기대하고 있기 때문에
DT <- DT[order(x, y, z)]
setkeyv(DT, c('x', 'y'))
그러나, 이것은 좋은 방법은 아닌 것 같아. 나중에 키로 사용되지 않기 때문에 키로 z
을 설정하고 싶지 않습니다. 이것을 달성하기위한보다 우아한 방법이 있습니까?
setkey(DT, x, y, z)
setkey(DT, x, y)
사용 setkey
이 세 열을 기준으로 정렬 한 다음를 재설정하여 키에서 마지막 열을 제거하기 : 왜
키를 'x, y, z'로두면 정확히 무엇이 문제입니까? – Arun
@Arun : 문제가되지 않을 수도 있습니다. 나는이 data.table을 다른 data.table과 x와 y로만 결합 할 수 있기 때문에, 일을 단순하게 유지하는 것이 좋습니다. – ezbentley