【发布时间】:2015-02-08 14:00:46
【问题描述】:
我想通过一个包含列名的变量来订购data.table:
我已经尝试了 + eval, getandc` 的所有组合,但没有成功:
我有colVar = "someColumnName"
我想将此应用于:DT[order(colVar)]
【问题讨论】:
标签: r sorting variables data.table
我想通过一个包含列名的变量来订购data.table:
我已经尝试了 + eval, getandc` 的所有组合,但没有成功:
我有colVar = "someColumnName"
我想将此应用于:DT[order(colVar)]
【问题讨论】:
标签: r sorting variables data.table
数据表可以使用双括号:
library(data.table)
dtbl <- data.table(x = 1:5, y = 5:1)
colVar = "y"
dtbl_sorted <- dtbl[order(dtbl[[colVar]])]
dtbl_sorted
【讨论】:
data.table 具有特殊功能,可以通过引用修改您的数据集,而不是将其复制到新对象。
您可以使用 setkey 或(在 >= 1.9.4 版本中)setorder,它们也可以降序排列。
注意setkey 与setkeyv 和setorder 与setorderv 之间的区别。 v 指出,您可以传递带引号的变量名称或包含变量名称的变量。
使用@andrewzm 数据集
dtbl
# x y
# 1: 1 5
# 2: 2 4
# 3: 3 3
# 4: 4 2
# 5: 5 1
setorderv(dtbl, colVar)[] # or `sekeyv(dtbl, colVar)[]` or `setorderv(dtbl, "y")[]`
# x y
# 1: 5 1
# 2: 4 2
# 3: 3 3
# 4: 2 4
# 5: 1 5
【讨论】:
setorderv 而不是setkeyv,但你没有必须接受任何东西,这是你的选择。不,我不需要积分,谢谢你,祝你有美好的一天。