Dans R, comment l'effondrement de catégories ou de réorganiser les variables?
Je suis sûr que ce est une question très simple:
Dans la R j'ai de 600 000 variables catégorielles - chaque de ce qui est classé comme "0", "1" ou "2"
Ce que je voudrais faire est d'effondrement "1" et "2" et laisser "0" par lui-même, de telle sorte que, après la re-catégorisation "0" = "0"; "1" = "1" et "2" = "1" --- à la fin, je veux seulement "0" et "1" en tant que catégories pour chacune des variables.
Également, si possible, je préfère ne pas créer de 600 000 nouvelles variables, si je peux remplacer les variables existantes avec les nouvelles valeurs, ce serait super!
Quelle serait la meilleure façon de le faire?
Merci!
Vous devez vous connecter pour publier un commentaire.
Il y a une fonction
recode
dans le paquetcar
(Compagnon de Appliqué la Régression):ou pour votre cas dans la plaine R:
Mise à jour: recoder tous catégorique colonnes d'un bloc de données
tmp
vous pouvez utiliser les éléments suivantsJe trouve que c'est encore plus générique à l'aide de
factor(new.levels[x])
:Les nouveaux niveaux vecteur doit avoir la même longueur que le nombre de niveaux de x, de sorte que vous pouvez faire plus compliqué ré-encode aussi bien à l'aide de cordes et de NAs par exemple
recode()'s un peu exagéré pour ce. Votre cas dépend de la façon dont il est actuellement codé. Disons que votre variable est x.
Si c'est numérique
si c'est le caractère
si c'est le facteur avec des niveaux 0,1,2
L'un de ceux qui peuvent être appliqués à l'ensemble d'un bloc de données dta de la variable x à la place. Par exemple...
Ou plusieurs colonnes d'une image
Noter que si vous voulez juste les résultats 0-1 variables binaires, vous pouvez renoncer à des facteurs tout à fait:
La deuxième ligne peut également être écrite de façon plus succincte (mais peut-être plus sibylline) comme
Ce transforme vos facteurs dans une série de variables logiques, "0" cartographie de
FALSE
et rien d'autre mappageTRUE
.FALSE
etTRUE
seront traités comme des 0 et des 1 en plus du code, ce qui devrait donner essentiellement le même résultat dans une analyse à l'aide d'un facteur avec le niveau "0" et "1". En effet, si l'on n'est pas donnent le même résultat, qui jetterait le doute sur la justesse de l'analyse....Vous pouvez utiliser le
rec
fonction de la sjmisc paquet, qui peut recoder un bloc de données à la fois (étant donné que toutes les variables ont au moins la même recode-valeurs).J'ai aimé la fonction dans dplyr qui peut rapidement recoder les valeurs.
Espère que cela aide 🙂