Comment mettre à l’échelle les valeurs entre 0 et 1 dans R
Vous pouvez utiliser les méthodes suivantes pour mettre à l’échelle les valeurs d’une variable entre 0 et 1 dans R :
Méthode 1 : utiliser la base R
#define function to scale values between 0 and 1 scale_values <- function(x){(x-min(x))/(max(x)-min(x))} x_scaled <- rescale(x)
Méthode 2 : utiliser le package de balances
library(scales)
x_scaled <- rescale(x)
Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant dans R :
#create data frame df <- data.frame(store=c('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'), sales=c(12, 24, 23, 59, 45, 34, 50, 77)) #view data frame df store sales 1 A 12 2 B 24 3 C 23 4 D 59 5 E 45 6 F 34 7 G 50 8 H 77
Exemple 1 : mettre à l’échelle les valeurs entre 0 et 1 en utilisant la base R
Le code suivant montre comment définir une fonction personnalisée en base R, puis utiliser la fonction pour mettre à l’échelle les valeurs de la colonne des ventes du bloc de données entre 0 et 1 :
#define function to scale values between 0 and 1 scale_values <- function(x){(x-min(x))/(max(x)-min(x))} #scale values in 'sales' column to be between 0 and 1 df$sales <- scale_values(df$sales) #view updated data frame df store sales 1 A 0.0000000 2 B 0.1846154 3 C 0.1692308 4 D 0.7230769 5 E 0.5076923 6 F 0.3384615 7 G 0.5846154 8 H 1.0000000
Chacune des valeurs de la colonne Ventes est désormais graduée entre 0 et 1.
Cette fonction a utilisé la formule suivante pour mettre à l’échelle chacune des valeurs :
- Valeur mise à l’échelle = (valeur – valeur min) / (valeur max – valeur min)
Par exemple, la valeur mise à l’échelle pour les ventes du magasin A a été calculée comme suit :
- Valeur mise à l’échelle = (12 – 12) / (77 – 12) = 0 / 65 = 0 .
De même, la valeur actualisée des ventes du magasin B a été calculée comme suit :
- Valeur mise à l’échelle = ( 24 – 12) / (77 – 12) = 12 / 65 = 0,1846 .
Et ainsi de suite.
Exemple 2 : valeurs d’échelle comprises entre 0 et 1 à l’aide du package Scales
Le code suivant montre comment utiliser la fonction rescale() du package scales dans R pour mettre à l’échelle les valeurs de la colonne sales du bloc de données afin qu’elles soient comprises entre 0 et 1 :
library(scales) #scale values in 'sales' column to be between 0 and 1 df$sales <- rescale(df$sales) #view updated data frame df store sales 1 A 0.0000000 2 B 0.1846154 3 C 0.1692308 4 D 0.7230769 5 E 0.5076923 6 F 0.3384615 7 G 0.5846154 8 H 1.0000000
Chacune des valeurs de la colonne Ventes est désormais graduée entre 0 et 1.
Notez que ces valeurs mises à l’échelle correspondent à celles calculées à l’aide de la méthode de base R.
Notez également que la fonction rescale() accepte un argument to qui spécifie la plage des valeurs mises à l’échelle.
Par exemple, vous pouvez utiliser la syntaxe suivante pour mettre à l’échelle les valeurs de la colonne des ventes entre 0 et 100 :
library(scales) #scale values in 'sales' column to be between 0 and 100 df$sales <- rescale(df$sales, to=c(0,100)) #view updated data frame df store sales 1 A 0.00000 2 B 18.46154 3 C 16.92308 4 D 72.30769 5 E 50.76923 6 F 33.84615 7 G 58.46154 8 H 100.00000
Chacune des valeurs de la colonne Ventes est désormais graduée entre 0 et 100.
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :
Comment calculer une moyenne tronquée dans R
Comment calculer une moyenne pondérée dans R
Comment calculer la valeur maximale dans chaque ligne dans R