gpt4 book ai didi

r - 使用多个列名的字符向量以编程方式对 data.table 进行排序

转载 作者:行者123 更新时间:2023-12-02 13:07:08 25 4
gpt4 key购买 nike

我需要对作为变量名称的字符向量提供的多个列上的 data.table 进行排序。

这是我到目前为止的方法:

DT = data.table(x = rep(c("b","a","c"), each = 3), y = c(1,3,6), v = 1:9)

#column names to sort by, stored in a vector
keycol <- c("x", "y")

DT[order(keycol)]
x y v
1: b 1 1
2: b 3 2

不知何故,它只显示 2 行并删除其他记录。但如果我这样做:

DT[order(x, y)]
x y v
1: a 1 4
2: a 3 5
3: a 6 6
4: b 1 1
5: b 3 2
6: b 6 3
7: c 1 7
8: c 3 8
9: c 6 9

它的工作原理就像流体一样。任何人都可以帮助使用列名称向量进行排序吗?

最佳答案

您需要 ?setorderv 及其 cols 参数:

A character vector of column names of x by which to order

library(data.table)
DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)
#column vector
keycol <-c("x","y")
setorderv(DT, keycol)
DT
x y v
1: a 1 4
2: a 3 5
3: a 6 6
4: b 1 1
5: b 3 2
6: b 6 3
7: c 1 7
8: c 3 8
9: c 6 9

请注意,无需将 setorderv 的输出分配回 DT。该函数通过引用更新DT

关于r - 使用多个列名的字符向量以编程方式对 data.table 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50282341/

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