web-dev-qa-db-fra.com

Convertir le facteur en entier

Je manipule un cadre de données en utilisant le paquetage rehape. Lorsque vous utilisez la fonction de fusion, elle factorise ma colonne de valeurs, ce qui pose un problème, car un sous-ensemble de ces valeurs est un entier sur lequel je souhaite pouvoir effectuer des opérations.

Est-ce que quelqu'un connaît un moyen de contraindre un facteur à un entier? Utiliser as.character() le convertira en caractère correct, mais je ne pourrai alors pas y effectuer d'opération immédiate. as.integer() ou as.numeric() le convertira en un nombre Le système enregistre ce facteur sous la forme, ce qui n’est pas utile.

Merci!

Jeff

58
Jeff Erickson

Vous pouvez combiner les deux fonctions. contraindre aux caractères, puis aux nombres:

> fac <- factor(c("1","2","1","2"))
> as.numeric(as.character(fac))
[1] 1 2 1 2
59
Gavin Simpson

Citant directement à partir de la page d'aide pour factor:

Pour transformer un facteur f en valeurs numériques d'origine, as.numeric(levels(f))[f] est recommandé et légèrement plus efficace que as.numeric(as.character(f)).

71
Aaron