Begin'R
Les statistiques avec R
Navigation
[Retour au sommaire]
# Corriger la nature d'une variable Il est possible de corriger la nature de chaque variable individuellement. Il existe pour cela une panoplie de fonctions, pour chaque type de variable. Les exemples de la suite sont tirés du [jeu de données Melons](caps_2_1_presentation_donnees_melons.html). | Rôle | Commande R | Exemples | |:----------------:|:------------------:|:----------| |Convertir en variable qualitative nominale | `as.factor()` | [ici](#ex_factor) | |Convertir en variable qualitative ordinale | `as.ordered()`| [ici](#ex_ordered) | |Convertir en variable quantitative discrète| `as.integer()`| [ici](#ex_integer) | |Convertir en variable quantitative continue | `as.numeric()`| [ici](#ex_numeric) | :Remarque Les deux dernières fonctions `as.integer()` et `as.numeric()` sont plus rarement utilisées. En effet, une variable quantitative est reconnue soit en type `integer` (s'il n'y aucun nombre à virgules dans les valeurs de cette variable), soit en type `numeric` (s'il y a au moins un nombre à virgules), mais dans les deux cas la variable sera bien considérée comme une variable quantitative. :Exemple {#ex_factor, toggle=popup} La variable `Couverture` est censée être une variable nominale car elle code le type de couverture utilisée pour la culture des melons. L'utilisation de la [fonction str()](caps_2_6_verification_type_variables.html) permet vérifier comment la variable est considérée par R : `str()` est appliquée à l'objet `Melons`. ```r str(Melons$Couverture) ``` ``` ## int [1:135] 1 1 1 1 1 5 5 5 5 5 ... ``` La fonction `as.factor()` appliquée à `Couverture` oblige R à la considérer comme une variable qualitative nominale ```r Melons$Couverture <- as.factor(Melons$Couverture) str(Melons$Couverture) ``` ``` ## Factor w/ 3 levels "1","3","5": 1 1 1 1 1 3 3 3 3 3 ... ``` :Remarque {#exemple1} Il est également possible de recoder les modalités d'une variable qualitative. Pour cela, l'argument `labels` de la fonction **`factor()`** permet de spécifier les nouvelles modalités. ```r levels(Melons$Couverture) ``` ``` ## [1] "1" "3" "5" ``` ```r Melons$Couverture = factor(Melons$Couverture, labels=c("thermique","perforée","sans_couverture")) levels(Melons$Couverture) ``` ``` ## [1] "thermique" "perforée" "sans_couverture" ``` Noter l'utilisation de la fonction **`levels()`** pour connaître les modalités de la variable. Dans cet exemple, les modalités `1`, `3` et `5` de la Variable `Couverture` sont remplacées respectivement par `"thermique"`, `"perforée"` et `"sans_couverture"`. :Exemple {#ex_ordered, toggle=popup} La variable `Creneau` ne contient que des valeurs numériques. Elle est interprétée par R comme étant une variable quantitative discrète et non comme une variable qualitative ordinale. ```r str(Melons$Creneau) ``` ``` ## int [1:135] 1 1 1 1 1 1 1 1 1 1 ... ``` La fonction `as.ordered()` permet de forcer R à considérer la variable comme qualitative ordinale : ```r Melons$Creneau <- as.ordered(Melons$Creneau) str(Melons$Creneau) ``` ``` ## Ord.factor w/ 5 levels "1"<"2"<"3"<"5"<..: 1 1 1 1 1 1 1 1 1 1 ... ``` :Exemple {#ex_integer, toggle=popup} La variable `Plantation` code le jour de plantation. Il s'agit bien d'une variable quantitative discrète, de valeurs entières entre 1 et 365. L'application de la fonction `str()` permet de vérifier que R a bien interprété la variable comme telle : ```r str(Melons$Plantation) ``` ``` ## int [1:135] 83 83 88 88 88 123 123 123 123 123 ... ``` Ici il est donc inutile d'appliquer la fonction `as.integer()`. :Exemple {#ex_numeric, toggle=popup} La fonction `as.numeric()` force R à considérer une variable comme une variable de type `numeric` : ```r Melons$N <- as.numeric(Melons$N) str(Melons$N) ``` ``` ## num [1:135] 72 72 140 140 140 181 181 181 181 181 ... ``` :Exercice : Obtenir le type de variables via `str()` et réaliser des corrections si besoin {#exercise_telechargement} Dans cet exercice, on s'intéresse au jeu de données `DonneesVins` disponible sur le lien suivant :
[](donnees/DonneesVins.xlsx)
Questions : * Importer le jeu de données dans R. * Vérifier que R a bien réussi à distinguer les différents types de variable. Si tel n'est pas le cas, faire les corrections nécessaires. :Corrigé {#answer_normal, toggle=collapse, title-display=show} L'importation du jeu de données, après l'avoir converti au format CSV, se fait grâce à l'instruction suivante : ```r DonneesVins <- read.csv2("DonneesVins.csv", header = TRUE, sep = ';', dec = ',', stringsAsFactors = TRUE) ``` ```r str(DonneesVins) ``` ``` ## 'data.frame': 36 obs. of 11 variables: ## $ Origine : Factor w/ 2 levels "Bordeaux","Bourgogne": 1 1 1 1 1 1 1 1 1 2 ... ## $ Couleur : Factor w/ 2 levels "Blanc","Rouge": 1 1 1 1 1 1 1 1 1 1 ... ## $ Libelle : int 1 2 3 4 5 6 7 8 9 10 ... ## $ Alcool : num 12 11.5 14.6 10.5 14 13.2 11.2 15.4 13.4 11.4 ... ## $ pH : num 2.84 3.1 2.96 3.1 3.29 2.94 2.91 3.43 3.35 2.9 ... ## $ AcTot : int 89 97 99 72 76 83 95 86 76 103 ... ## $ Tartrique: num 21.1 26.4 20.7 29.7 22.3 24.6 39.4 14.1 18.9 50 ... ## $ Malique : num 21 34.2 21.8 4.2 9.3 9.4 14.5 28.8 23 18 ... ## $ Citrique : num 4.3 3.9 8.1 3.6 4.7 4.1 4.2 8.5 6.4 2.8 ... ## $ Acetique : num 16.9 9.9 19.7 11.9 20.1 19.7 19.4 15 14.4 14.4 ... ## $ Lactique : num 9.3 16 11.2 14.4 21.6 16.8 10.5 12.6 10.5 8.5 ... ``` La variable `Libelle` pour R est une variable quantitative or on sait que c'est un identifiant qui doit se traiter comme une variable qualitative nominale. Il faut donc changer le type de cette variable. ```r DonneesVins$Libelle <- as.factor(DonneesVins$Libelle) ``` On peut alors vérifier que le changement de type de variable a bien été pris en compte : ```r str(DonneesVins) ``` ``` ## 'data.frame': 36 obs. of 11 variables: ## $ Origine : Factor w/ 2 levels "Bordeaux","Bourgogne": 1 1 1 1 1 1 1 1 1 2 ... ## $ Couleur : Factor w/ 2 levels "Blanc","Rouge": 1 1 1 1 1 1 1 1 1 1 ... ## $ Libelle : Factor w/ 36 levels "1","2","3","4",..: 1 2 3 4 5 6 7 8 9 10 ... ## $ Alcool : num 12 11.5 14.6 10.5 14 13.2 11.2 15.4 13.4 11.4 ... ## $ pH : num 2.84 3.1 2.96 3.1 3.29 2.94 2.91 3.43 3.35 2.9 ... ## $ AcTot : int 89 97 99 72 76 83 95 86 76 103 ... ## $ Tartrique: num 21.1 26.4 20.7 29.7 22.3 24.6 39.4 14.1 18.9 50 ... ## $ Malique : num 21 34.2 21.8 4.2 9.3 9.4 14.5 28.8 23 18 ... ## $ Citrique : num 4.3 3.9 8.1 3.6 4.7 4.1 4.2 8.5 6.4 2.8 ... ## $ Acetique : num 16.9 9.9 19.7 11.9 20.1 19.7 19.4 15 14.4 14.4 ... ## $ Lactique : num 9.3 16 11.2 14.4 21.6 16.8 10.5 12.6 10.5 8.5 ... ``` :Suite de la Manipulation de données {#manipulation, toggle=collapse, title-display=hidden} [Présentation du jeu de données](caps_2_1_presentation_donnees_melons.html) : présentation du jeu de données "Melons" sur lequel sont basés les exemples de cette partie [Conversion Excel -> CSV](caps_2_2_conversion_exel_vers_csv.html) : Comment convertir un fichier Excel en un fichier .csv [Importation sous R d'un fichier CSV](caps_2_3_importation_csv.html) [Solutions aux problèmes d'importation d'un fichier CSV](caps_2_4_probleme_importation_csv.html) [Caractéristiques d'un jeu de données](caps_2_5_caracterisitique_jeu_donnees.html) [Vérification du type de variables](caps_2_6_verification_type_variables.html) [Corriger la nature d'une variable](caps_2_7_corriger_type_variables.html) [Transformantion d'un jeu de données](caps_2_8_transformer_jeu_donnees.html) [Accéder à un sous-ensemble de variables et/ou d'individus](caps_2_9_extraire_sous_ensemble.html) [Extraire un sous-ensemble avec la fonction "subset"](caps_2_10_extraire_sous_ensemble_subset.html) [Sauvegarder un jeu de données](caps_2_11_sauvegarder_jeu_donnees_csv.html) [Manipulation d'un tableau de données (dataframe)](caps_2_13_dataframe.html) [Exercice bilan](caps_2_12_exercice_bilan_manipulation_jeu_donnees.html)