• analyse-de-donnes-cestad
  • analytics_tools_original
  • data-minig1
  • data-minig2
  • Data-Mining-1030
  • Big-data-azzurro
  • marketing-statistics
Enquêtes
Collete des données
Traitement des données
Analyse des données
 
Programmation
Programmation statistique
Developpement des macros
Modélisation et plus encore
 
Data Mining
Exploration des données
Modélisation prédictive
Big Data
 
Formations certifiantes
Formations à la carte
Semilaires et conférences

 

 

 

Un facteur R peut être considéré simplement comme un vecteur avec un peu plus d'informations ajoutées (cependant, comme on le voit ci-dessous, il est différent de celui-ci en interne). Cette information supplémentaire consiste en un enregistrement des valeurs distinctes dans ce vecteur, appelé niveaux. Voici un exemple:
  1. > x <- c(5,12,13,12)
  2. > xf <- factor(x)
  3. > xf
  4. [1] 5 12 13 12
  5. Levels: 5 12 13
Source code
Les valeurs distinctes dans xf 5, 12 et 13 sont les niveaux. Jetons un coup d'oeil à l'intérieur:
  1. > str(xf)
  2. Factor w/ 3 levels "5","12","13": 1 2 3 2
  3. > unclass(xf)
  4. [1] 1 2 3 2
  5. attr(,"levels")
  6. [1] "5" "12" "13"
Source code
C'est révélateur. Le noyau de xf  n'est pas (5,12,13,12), mais plutôt (1,2,3,2). Ce dernier signifie que nos données sont d'abord une valeur de niveau 1, puis des valeurs de niveau 2 et de niveau 3, et enfin une autre valeur de niveau 2. Donc, les données ont été recodées par niveau. Les niveaux eux-mêmes sont également enregistrés.
La longueur d'un facteur est toujours définie en fonction de la longueur des données:
  1. > length(xf)
  2. [1] 4
Source code
Nous pouvons anticiper les nouveaux niveaux futurs, comme on le voit ici:
  1. > x <- c(5,12,13,12)
  2. > xff <- factor(x,levels=c(5,12,13,88))
  3. > xff
  4. [1] 5 12 13 12
  5. Levels: 5 12 13 88
  6. > xff[2] <- 88
  7. > xff
  8. [1] 5 88 13 12
  9. Levels: 5 12 13 88
Source code
À l'origine, xff ne contenait pas la valeur 88, mais en la définissant, nous avons autorisé cette possibilité future. Plus tard, nous avons effectivement ajouté la valeur.
De la même façon, vous ne pouvez pas se faufiler dans un niveau "illégal". Voici ce qui se passe lorsque vous essayez:
  1. > xff[2] <- 28
  2. Warning message:
  3. In `[<-.factor`(`*tmp*`, 2, value = 28) :
  4. invalid factor level, NAs generated
Source code