gpt4 book ai didi

r - 根据具有特定(非字母)顺序的字符列对 data.table 进行排序

转载 作者:行者123 更新时间:2023-12-03 13:55:11 25 4
gpt4 key购买 nike

我想根据手动指定的字符向量对数据表进行排序。

library(data.table)
DT = data.table(x=c("c","b","a"), y=1:3)

我可以按字母顺序排列:
DT[order(x)]

但是我可以根据字符向量来订购它,例如:
preferred.order <- c("b","a","c")

目标是:
data.table(x=c("b","a","c"), y=c(2,1,3))

实际上,我有一个 data.table,其中包含收集的输出和第一列中的变量名称。出于演示目的,我希望这些变量按特定(非字母顺序)的顺序排列。

最佳答案

一种可能性是按首选顺序加入:

DT[preferred.order, on="x"]
x y
1: b 2
2: a 3
3: c 1

请注意,这需要 preferred.order 向量包含 DT$x 中的所有元素并且没有重复。

作为替代方案,您可以创建一个因子变量 DT$x使用首选顺序,然后使用 setorder通过引用订购 DT。
DT[, xFac := factor(x, levels=preferred.order)]
setorder(DT, xFac)

返回
DT
x y xFac
1: b 2 b
2: a 3 a
3: c 1 c

哪种方法更可取会因用例而异。

关于r - 根据具有特定(非字母)顺序的字符列对 data.table 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42563710/

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