J'ai un ensemble de données dans lesquelles je dois coder les valeurs de certaines variables (numériques) en 3 classes.
Mon ensemble de données est similaire à celui-ci, mais 60 variables supplémentaires: p>
> data2 anim wt SWT 1 1 181.0 1 2 2 179.0 1 3 3 180.5 1 4 4 201.0 2 5 5 201.5 2 6 6 245.0 2 7 7 246.4 2 8 8 189.3 1 9 9 301.0 3 10 10 354.0 3 11 11 369.0 3 12 12 205.0 2 13 13 199.0 1 14 14 394.0 3 15 15 231.3 2
5 Réponses :
Vous pouvez essayer modifier: groupe fixe - droit = false, s'est débarrassé de l'exemple divisé. p> couper code>
Je crois que j'aurais dû utiliser le terme "codage" au lieu de "casser", ce qui signifie que je dois coder WT = 179 <200 comme 1; WT = 200 <300 AS 2 et WT> 300 AS 3. Désolé pour mon erreur!
@baz - J'ai ajouté le code pour ajouter le groupe. Vous pouvez regarder le paramètre droit code> pour inclure le côté gauche ou droit de l'intervalle. Je pense que mon paramètre gauche / droit est désactivé de votre exemple.
@baz - Je pense que mon cadre de données correspond à la vôtre maintenant.
J'imagine Labels = false code> est préféré sur
as.numeric () code> pour ceux qui se font travailler sur de telles choses.
Et si j'ai besoin de diviser ma variable WT en 3 groupes de taille égale ou une variable continue de cette affaire
La méthode CUT code> telle que décrite par @greg est probablement ce que vous voulez ici. Une chose à noter est que
couper code> renvoie un facteur par défaut, que vous pouvez supprimer en fournissant
étiquettes = false code> pour renvoyer les valeurs entier:
data$group2 <- with(data, ifelse(wt >= 179 & wt < 200, 1,
ifelse(wt >= 200 & wt < 300, 2, 3))
)
Bon point sur les étiquettes. Je viens de le jeter à un numéro numérique avec as.numérique code> pour obtenir des valeurs de groupe entier.
@Greg - J'imagine que c'est six en une, 1/2 douzaine de l'autre. En fait, je n'ai pas réalisé CODE> CUT CODE> retournerait les valeurs numériques jusqu'à ce qu'elles examinent le fichier d'aide pour la question. J'ai toujours utilisé la méthode as.numeric () code> ...
@Chase: J'admets que ce que Greg a fourni des œuvres, je dirai également que ce que vous avez suggéré permet de contrôler plus de contrôle et peut aussi être la flexibilité.
@baz - Je trouve ifelse plus utile lorsque je dispose de nouvelles variables basées sur 2 ou plus de variables existantes ... I.e si "lundi et pluvieux", alors "ne sors pas de lit"
@baz, @chase - Les déclarations d'Ifelle imbriquées sont excellentes pour 3 groupes. Mais si vous avez 20 groupes, cela peut devenir difficile à manier.
@ Chase, @ greg: j'aime toujours utiliser Ifelse mais je ne suis pas vraiment confiant lorsque vous utilisez 2 variables ou plus pour en obtenir une nouvelle. Maintenant, je crois que j'ai cette confiance. Merci beaucoup de gars!
@baz: Pour la performance, vous feriez mieux de nidifier trop de viases. CUT CODE> est conçu pour le faire pour vous, alors utilisez-le.
@Chase: toujours sur le même exemple: au lieu de mettre une plage pour chaque niveau, j'ai juste besoin de diviser en 3 groupes de taille égale.
Je pense que les réponses de Greg couvrir la "procédure d'exploitation standard", mais je trouve également de nombreuses utilisations de la fonction FindInterval. Il renvoie naturellement un nombre qui identifie l'intervalle dans le deuxième argument.
data$int <- findInterval(data$wt, c(179, 200, 300, Inf)) data
Juste pour montrer une méthode alternative (similaire à recoder dans SPSS) à partir d'un package voiture :
> data$SWT <- with(data, recode(wt, "lo:200=1; 300:hi=3; else=2")) > data anim wt SWT 1 1 181.0 1 2 2 179.0 1 3 3 180.5 1 4 4 201.0 2 5 5 201.5 2 6 6 245.0 2 7 7 246.4 2 8 8 189.3 1 9 9 301.0 3 10 10 354.0 3 11 11 369.0 3 12 12 205.0 2 13 13 199.0 1 14 14 394.0 3 15 15 231.3 2
J'utilise également la voiture de paquet dans certains de mes travaux de recodage sur des variables catégoriques telles que: DF $ NEWVAR <- RECODE (DF $ $ OLDVAR, "C (1) = 2; C (0) = 1") mais n'a jamais utilisé varibes continues. Merci pour ça!
Juste pour l'exhaustivité et les informations, le package clastand (sur Cran) est un autre moyen pratique de classer les chiffres dans les classes. P>