Ranking multiple columns by different orders using data table
问题 Using my example below, how can I rank multiple columns using different orders, so for example rank y as descending and z as ascending? require(data.table) dt <- data.table(x = c(rep("a", 5), rep("b", 5)), y = abs(rnorm(10)) * 10, z = abs(rnorm(10)) * 10) cols <- c("y", "z") dt[, paste0("rank_", cols) := lapply(.SD, function(x) frankv(x, ties.method = "min")), .SDcols = cols, by = .(x)] 回答1: data.table 's frank() function has some useful features which aren't available in base R's rank()