【发布时间】:2018-05-10 22:24:37
【问题描述】:
我需要在作为变量名的字符向量提供的多个列上对 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
它像流体一样工作。 任何人都可以帮助使用列名向量进行排序吗?
【问题讨论】:
-
order(keycol)返回1:2。使用单个参数,data.table行上的子集。此行为与 data.frame 不同,后者是列上的子集。您是在告诉data.table保留第 1 行和第 2 行。 -
setkeyv(DT, c('x', 'y'))如果你想钥匙和订购
标签: r sorting data.table