Comment convertir un facteur de r

Parfois vous avez besoin pour convertir explicitement facteurs soit texte ou des chiffres. Pour ce faire, vous utilisez les fonctions as.character () ou as.numeric (). Tout d'abord, convertir votre directions vecteur dans un facteur appelé directions.factor (comme vous avez vu plus tôt):

> Directions lt; - c («Nord», «Est», «Sud», «Sud»)> directions.factor lt; - facteur (directions)> directions.factor [1] North East SouthLevels sud: Nord Sud Est

Usage as.character () pour convertir un facteur à un vecteur de caractères:

> As.character (directions.factor) [1] «Nord» «Est» "Sud" "Sud"

Usage as.numeric () pour convertir un facteur à un vecteur numérique. Notez que ce sera de retour les codes numériques qui correspondent aux niveaux de facteur. Par example, "Est" Correspond à 1, «Nord» Correspond à 2, et ainsi de suite:

> As.numeric (directions.factor) [1] 2 1 3 3

Soyez très prudent lorsque vous convertissez facteurs ayant des niveaux numériques pour un vecteur numérique. Les résultats peuvent ne pas être ce que vous attendez.




Par exemple, imaginez que vous avez un vecteur qui indique des résultats score au test avec les valeurs c (9, 8, 10, 8, 9), qui vous convertissez à un facteur:

> Numéros lt; - facteur (c (9, 8, 10, 8, 9))

Pour regarder la représentation interne des numéros, utilisation str ():

> Str (nombre) Facteur w / 3 niveaux "8", "9", "10": 2 1 3 1 2

Ceci indique que R stocke les valeurs que c (2, 1, 3, 1, 2) avec les niveaux associés de c ("8", "9", "10").

image0.jpg

Si vous voulez convertir numéros à un vecteur de caractères, les résultats sont à peu près comme vous le souhaitez:

> As.character (chiffres) [1] "9" "8" "10" "8" "9"

Toutefois, si vous utilisez tout simplement comme. numérique (), votre résultat est un vecteur des représentations de niveau internes de votre facteur et non pas les valeurs d'origine:

> As.numeric (chiffres) [1] 2 1 3 1 2

Le R aide à ?facteur décrit une solution à ce problème. La solution consiste à indexer les niveaux par le facteur lui-même, puis à convertir en numérique:

> As.numeric (as.character (chiffres)) [1] 9 8 10 8 9

Ceci est un exemple de fonctions imbriquées dans R, dans lequel vous passez les résultats d'une fonction à une deuxième fonction. Les fonctions imbriquées sont un peu comme les poupées russes, où chaque jouet est à l'intérieur de la prochaine:

  • La fonction interne, as.character (chiffres), contient le texte c ("8", "9", "10").

  • La fonction externe, as.numeric (...), fait la conversion finale à c (9, 8, 10, 8, 9).


» » » » Comment convertir un facteur de r