gpt4 book ai didi

data.table `setkey()` 的逆序

转载 作者:行者123 更新时间:2023-12-04 17:56:41 24 4
gpt4 key购买 nike

setkey data.table 的记录顺序颠倒的最佳方法是什么?到目前为止,我使用了 setkey()setorder() 的组合:

setkeyrev <- function(inputDT,...){
setkey(inputDT, ...)
setorderv(inputDT, key(inputDT), order = -1)
invisible(inputDT)
}

有没有更好的解决方案?

更新。这是一个例子:

myDT <- fread('
colA colB
1 b1
3 b3
8 b8
5 b5')

setkey(myDT, colA)
myDT

setkeyrev(myDT, colA)
myDT

最佳答案

我迟到了 3 年,但这可能对其他人有帮助。我一直在寻找这个确切问题的解决方案,但正如评论中所述,OP 中的示例不保留 key 。这些评论让我想到了一个简单的解决方案。创建一个新列,给出所需的顺序(反向排序),然后将其用作键...

myDT <- fread('
colA colB
1 b1
3 b3
8 b8
5 b5')

myDT[,revorder:=frankv(colA,order=-1,ties.method = "first")]
setkey(myDT,revorder)

如果您需要在组内进行反向排序(就像我一样)...

myDT <- fread('
colA grp
1 a
2 a
3 a
4 b
8 b
5 b')

myDT[,revorder:=frankv(colA,order=-1,ties.method = "first"),by = grp]
setkey(myDT,grp,revorder)


关于data.table `setkey()` 的逆序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39964647/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com