我们可以使用 data.table 按组设置顺序吗?

Dis*_*s23 3 r data.table

简单的问题:

我想在我的 DT 上使用data.table::setorder,但我不能按组执行此操作。是否可以 ?

在此示例中,我订购了整个 DT :

DT = data.table(a=rep(c('C', 'A', 'D', 'B', 'E'), each = 4), b=sample(1:1000,20))
setorder(DT, b)
DT
Run Code Online (Sandbox Code Playgroud)

但我想保持固定。

谢谢 !

Tho*_*ing 5

你的意思是像下面这样吗?

> DT[, .SD[order(b)], a]
    a   b
 1: C 129
 2: C 679
 3: C 836
 4: C 930
 5: A 270
 6: A 299
 7: A 471
 8: A 509
 9: D 187
10: D 307
11: D 597
12: D 978
13: B 277
14: B 494
15: B 874
16: B 950
17: E 330
18: E 591
19: E 775
20: E 841

> DT[, setorder(.SD, b), a]
    a   b
 1: C 129
 2: C 679
 3: C 836
 4: C 930
 5: A 270
 6: A 299
 7: A 471
 8: A 509
 9: D 187
10: D 307
11: D 597
12: D 978
13: B 277
14: B 494
15: B 874
16: B 950
17: E 330
18: E 591
19: E 775
20: E 841
Run Code Online (Sandbox Code Playgroud)

  • 对于某些数据集,在调用之前进行排序可能会更有效。例如,`dt[order(b), .SD, a]`。+1。 (4认同)