Maison >base de données >tutoriel mysql >Comment puis-je répliquer les fonctions RANK de SQL (ROW_NUMBER, RANK, DENSE_RANK, LEAD, LAG) dans R ?
Émulation des fonctions de classement de SQL dans R
Équivalents des fonctions de classement dans R
Les données. Le package de table offre des fonctionnalités similaires au classement SQL d'Oracle. fonctions.
Exemple d'utilisation de la fonction 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 Mimétisme
DT[, infoRank := rank(info, ties.method = "min"), by = "group"] DT[, infoRankDense := as.integer(factor(info)), by = "group"]
Imitation LEAD et LAG
Créez une variable de classement basée sur l'ordre des identifiants au sein des groupes. Ensuite, utilisez J() pour récupérer les valeurs des enregistrements précédents ou suivants.
DT[, idRank := rank(ID), by = "group"] setkey(DT, group, idRank) DT[, prev := DT[J(group, idRank - 1), value, mult = 'last']]
Pour LEAD, ajoutez le décalage approprié à idRank et utilisez multi = 'first' :
DT[, nex := DT[J(group, idRank + 1), value, mult = 'first']]
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!