201 votes

Ordonner les lignes du cadre de données selon le vecteur avec un ordre spécifique

Existe-t-il un moyen plus simple de s'assurer que les lignes d'un cadre de données sont ordonnées selon un vecteur "cible" comme celui que j'ai implémenté dans le court exemple ci-dessous ?

df <- data.frame(name = letters[1:4], value = c(rep(TRUE, 2), rep(FALSE, 2)))

df
#   name value
# 1    a  TRUE
# 2    b  TRUE
# 3    c FALSE
# 4    d FALSE

target <- c("b", "c", "a", "d")

Cela semble être un peu trop "compliqué" pour faire le travail :

idx <- sapply(target, function(x) {
    which(df$name == x)
})
df <- df[idx,]
rownames(df) <- NULL

df 
#   name value
# 1    b  TRUE
# 2    c FALSE
# 3    a  TRUE
# 4    d FALSE

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X