J'ai une image de données avec toutes les valeurs de facteur Comment puis-je convertir toutes les valeurs du cadre de données en une nouvelle avec des valeurs numériques (A à 1, B à 2, C à 3, etc ...) p> p>
3 Réponses :
conversion du facteur code> à si nous utilisons numérique code> donne les valeurs entier. Mais, si les colonnes CODE> facteur code> ont des niveaux spécifiés comme
c ('B', 'A', 'A', 'C', 'D') CODE> ou
C ('C ',' B ',' A ') CODE>, les valeurs entier seront dans cet ordre. Juste pour éviter cela, nous pouvons spécifier les niveaux
code> en appelant le facteur code> à nouveau (coeur> (plus sûr)
data.Table code>, une option serait d'utiliser
définir code>. Il serait plus efficace pour les grands ensembles de données. Conversion de
Matrix Code> peut poser des problèmes de mémoire. P>
library(data.table)
setDT(df1)
for(j in seq_along(df1)){
set(df1, i=NULL, j=j,
value= as.numeric(factor(df1[[j]], levels= letters[1:3])))
}
Je suis curieux: comment est df1 [] <- ... diffère de DF1 <-... Je pense qu'ils conduisent au même résultat à la fin, mais peut-être par des chemins différents?
@atiretoo Il conserve la structure comme dans l'ensemble de données d'origine.
Aha! Merci oui en particulier DF1 sera toujours un cadre de données
J'essaierais:
> mydf[] <- as.numeric(factor(as.matrix(mydf))) > mydf V1 V2 V3 1 1 2 3 2 3 2 1 3 3 2 3 4 2 2 1
Pourriez-vous expliquer pourquoi un simple appliquer (mydf, 2, as.numeric) code> ne fonctionne pas?
@Albertmasclans, lisez la première ligne de la section "Détails" pour Appliquer code>.
Appliquer code> est d'abord
as.Matrix code> sur le
data.frame code> (qui convertira tout en
caractère code> s). Si vous utilisez ensuite directement
as.numérique code> sur un fichier
de caractères code>, vous vous retrouverez avec une bande de
NA code> valeurs.
Cette approche est similaire à celle d'Ananda, mais utilise Examinons ce qui se passe lorsque nous nous trouvons lorsque nous Unlist () code> au lieu du facteur
(as.matrix ()) code>. Étant donné que toutes vos colonnes sont déjà des facteurs,
Unlist () code> les combinera dans un vecteur de facteur avec les niveaux appropriés.
Unlist () Code> Votre cadre de données. P>
df <- structure(list(V1 = structure(c(1L, 3L, 3L, 2L), .Label = c("a",
"b", "c"), class = "factor"), V2 = structure(c(1L, 1L, 1L, 1L
), .Label = "b", class = "factor"), V3 = structure(c(2L, 1L,
2L, 1L), .Label = c("a", "c"), class = "factor")), .Names = c("V1",
"V2", "V3"), class = "data.frame", row.names = c(NA, -4L))