在 R 中模拟 SQL 的排名函数
R 中的等效排名函数
数据。 table 包提供类似于 Oracle 的 SQL 等级的功能函数。
Rank 函数使用示例
library(data.table) DT <- data.table(ID = seq_len(4 * 3), group = rep(1:4, each = 3), value = rnorm(4 * 3), info = c(sample(c("a", "b"), 4 * 2, replace = TRUE), sample(c("c", "d"), 4, replace = TRUE)), key = "ID") DT[, valRank := rank(-value), by = "group"]
DENSE_RANK模仿
DT[, infoRank := rank(info, ties.method = "min"), by = "group"] DT[, infoRankDense := as.integer(factor(info)), by = "group"]
LEAD 和 LAG 模仿
根据组内 ID 的顺序创建排名变量。然后,使用 J() 从先前或后续记录中检索值。
DT[, idRank := rank(ID), by = "group"] setkey(DT, group, idRank) DT[, prev := DT[J(group, idRank - 1), value, mult = 'last']]
对于 LEAD,向 idRank 添加适当的偏移量并使用 multi = 'first':
DT[, nex := DT[J(group, idRank + 1), value, mult = 'first']]
以上是如何在 R 中复制 SQL 的 RANK 函数(ROW_NUMBER、RANK、DENSE_RANK、LEAD、LAG)?的详细内容。更多信息请关注PHP中文网其他相关文章!