我有一组数据,我需要添加多个额外的列来对现有数据进行排名。我是通过一次添加一个额外的列来做到这一点的,但我希望通过将列作为字符向量传入来获得更有效的方法?这是一个简单的例子:
require(data.table)
dt <- data.table(x = rnorm(10),
y = rnorm(10))
dt[, ":=" (rank_x = rank(x, ties.method = "min"),
rank_y = rank(y, ties.method = "min"))]
排名方法在所有情况下都是相同的,所以我希望使用类似的方法
cols <- c("x", "y")
dt[, cols := lapply(.SD, function(x) rank(x, ties.method = "min")), .SDcols = cols]
最佳答案
我们可以使用 paste
来创建新变量
dt[, paste0("rank_", cols) := lapply(.SD, rank, ties.method = "min"), .SDcols = cols]
关于r - 向数据表添加多个新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44840508/