Dans R, ajouter le préfixe T pour lier les rangs
data.frame(a = c(12, 13, 17, 19, 17), b = c(3, 5, 5, 4, 6)) %>%
dplyr::mutate(a_rank = rank(desc(a), ties.method = "min"),
b_rank = rank(desc(b), ties.method = "min")) %>%
dplyr::arrange(a_rank)
a b a_rank b_rank
1 19 4 1 4
2 17 5 2 2
3 17 6 2 1
4 13 5 4 2
5 12 3 5 5
Comment mettre à jour le code ci-dessus pour le convertir a_rank
en une colonne de chaîne et ajouter un T
préfixe à tous les rangs qui sont à égalité.
a b a_rank b_rank
1 19 4 1 4
2 17 5 T2 T2
3 17 6 T2 1
4 13 5 4 T2
5 12 3 5 5
Solution du problème
Nous pouvons utiliser une ifelse
déclaration avec duplicated
pour trouver toutes les valeurs dupliquées et si elles sont dupliquées, collez T
-les sur ces valeurs.
library(tidyverse)
data.frame(a = c(12, 13, 17, 19, 17), b = c(3, 5, 5, 4, 6)) %>%
dplyr::mutate(a_rank = rank(desc(a), ties.method = "min"),
b_rank = rank(desc(b), ties.method = "min")) %>%
dplyr::arrange(a_rank) %>%
mutate(across(ends_with("rank"), ~ ifelse(duplicated(.) | duplicated(., fromLast = TRUE), paste0("T",.),.)))
Production
a b a_rank b_rank
1 19 4 1 4
2 17 5 T2 T2
3 17 6 T2 1
4 13 5 4 T2
5 12 3 5 5
Commentaires
Enregistrer un commentaire