Raj*_*edy 4 r data.table data-science
我对R很新,并尝试构建一个比较两个数据集的函数,为了做到这一点,我需要在多列上对数据表进行排序.我相信在某处会有一些帮助,但我不知道如何搜索为了它.到目前为止这是我的方法:
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")
DT[order(keycol)]
x y v
1: b 1 1
2: b 3 2
Run Code Online (Sandbox Code Playgroud)
不知何故它只显示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
Run Code Online (Sandbox Code Playgroud)
它就像流体一样.任何人都可以帮助使用列名矢量进行排序,任何帮助将不胜感激.
你需要?setorderv.
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
Run Code Online (Sandbox Code Playgroud)
请注意,无需将输出分配setorderv回DT.该功能DT通过引用更新.