Fonction order() de R - Obtenir les indices de tri
La fonction order() de R renvoie les positions d'index de chaque élément du vecteur d'origine après tri.
Contrairement à sort(), qui renvoie les valeurs triées, order() renvoie la permutation du tri, ce qui est très utile pour le tri des data frames.
La syntaxe de la fonction order() est la suivante :
order(x, decreasing = FALSE, na.last = TRUE)
Description du paramètre :
xVecteur d'entrée (plusieurs vecteurs peuvent être passés pour un tri multi-critères).
decreasingIndique s'il faut trier par ordre décroissant, FALSE par défaut.
na.lastPlacement des valeurs NA.
Exemple
x <- c(50, 20, 30, 10, 40)
names(x) <- c("Zhang San", "Li Si", "Wang Wu", "Zhao Liu", "Qian Qi")
# order renvoie les indices de tri
idx <- order(x)
print("Indices triés :")
print(idx)
# Utiliser les indices pour obtenir les valeurs triées et les noms correspondants
print("Par score croissant :")
print(x[idx])
# sort renvoie directement les valeurs triées (comparaison)
print("résultat direct de sort :")
print(sort(x))
names(x) <- c("Zhang San", "Li Si", "Wang Wu", "Zhao Liu", "Qian Qi")
# order renvoie les indices de tri
idx <- order(x)
print("Indices triés :")
print(idx)
# Utiliser les indices pour obtenir les valeurs triées et les noms correspondants
print("Par score croissant :")
print(x[idx])
# sort renvoie directement les valeurs triées (comparaison)
print("résultat direct de sort :")
print(sort(x))
L'exécution du code ci-dessus produit le résultat suivant :
[1] "排序后的索引:" [1] 4 2 3 5 1 [1] "按成绩升序:" 赵六 李四 王五 钱七 张三 10 20 30 40 50 [1] "sort 直接结果:" 赵六 李四 王五 钱七 张三 10 20 30 40 50
order() est très pratique pour trier des tableaux de données :
Exemple
# Créer un DataFrame
df <- data.frame(
Name= c("Zhang San", "Li Si", "Wang Wu", "Zhao Liu", "Qian Qi"),
Âge= c(25, 30, 22, 28, 26),
Score= c(88, 92, 76, 85, 90)
)
# Trier par score décroissant
df_sorted <- df[order(df$Score, decreasing= TRUE), ]
print("Trié par score décroissant :")
print(df_sorted)
# Tri multi-critères : d'abord par âge, puis par score
df_sorted2 <- df[order(df$Age,df$score), ]
print("D'abord par âge, puis par score :")
print(df_sorted2)
df <- data.frame(
Name= c("Zhang San", "Li Si", "Wang Wu", "Zhao Liu", "Qian Qi"),
Âge= c(25, 30, 22, 28, 26),
Score= c(88, 92, 76, 85, 90)
)
# Trier par score décroissant
df_sorted <- df[order(df$Score, decreasing= TRUE), ]
print("Trié par score décroissant :")
print(df_sorted)
# Tri multi-critères : d'abord par âge, puis par score
df_sorted2 <- df[order(df$Age,df$score), ]
print("D'abord par âge, puis par score :")
print(df_sorted2)
L'exécution du code ci-dessus produit le résultat suivant :
[1] "按成绩降序排列:" 姓名 年龄 成绩 2 李四 30 92 5 钱七 26 90 1 张三 25 88 4 赵六 28 85 3 王五 22 76 [1] "先按年龄再按成绩:" 姓名 年龄 成绩 3 王五 22 76 1 张三 25 88 5 钱七 26 90 4 赵六 28 85 2 李四 30 92Autres extensions
Exemples du langage R