是否有可能在数据列中排序data.table,同时最后放置一个特殊行(残余类别)(基于另一列的标签)?
DT <- data.table (a =c("a", "sd", "set", "c", "s", "REST", "sde", "de"),
b=c(5,1:4, 2.5, 1:2))
Run Code Online (Sandbox Code Playgroud)
预期的产出会是这样的
a b
1: sd 1.0
2: sde 1.0
3: set 2.0
4: de 2.0
5: c 3.0
6: s 4.0
7: a 5.00
8: REST 2.5
Run Code Online (Sandbox Code Playgroud)
我在下面给出了一个答案,但我想知道是否有一种可能没有rbind.这很复杂,我想这也会复制整个data.table;)
您可以将表达式传递给order.
DT[order(a=="REST", b)] # internally optimised to use data.table's fast ordering
Run Code Online (Sandbox Code Playgroud)
如果您想使用setorder(通过引用重新排序):
DT[, tmp := a == "REST"]
setorder(DT, tmp, b)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |