le codage des valeurs de variables dans les classes à l'aide de R
J'ai un ensemble de données dans lequel j'ai besoin de coder les valeurs de certaines variables (numériques) en 3 classes.
Mon jeu de données est similaire à ce mais a 60 plus variables:
anim <- c(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15)
wt <- c(181,179,180.5,201,201.5,245,246.4,189.3,301,354,369,205,199,394,231.3)
data <- data.frame(anim,wt)
> data
anim wt
1 1 181.0
2 2 179.0
3 3 180.5
4 4 201.0
5 5 201.5
6 6 245.0
7 7 246.4
8 8 189.3
9 9 301.0
10 10 354.0
11 11 369.0
12 12 205.0
13 13 199.0
14 14 394.0
15 15 231.3
J'ai besoin de code de valeurs de la variable "wt" en 3 classes: (wt >= 179 & tm < 200) = 1; (wt >= 200 & tm < 300) = 2; (wt > 300) = 3
qui devrait me donner cette
> 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
Vous devez vous connecter pour publier un commentaire.
La
cut
méthode comme indiqué par @Greg est probablement ce que vous voulez ici. Une chose à noter est quecut
retourne un facteur par défaut, que vous pouvez supprimer en fournissantlabels = FALSE
pour retourner les valeurs entières:Alternativement, si votre coupe ne se prête pas à des interruptions naturelles, vous pouvez utiliser
ifelse()
. Vous pouvez "nid" de la ifelse des propos similaires à Excel. J'utilise "par" de couper vers le bas sur le typage nécessaires:as.numeric
pour obtenir entier, les valeurs du groupe.cut
serait de retour les valeurs numériques jusqu'en regardant le fichier d'aide pour la question. J'ai toujours utilisé leas.numeric()
méthode...Cut
est conçu pour le faire pour vous, afin de l'utiliser.Vous pouvez essayer
cut
EDIT: correction d'un groupe de droite = FALSE, débarrassé de split exemple.
right
paramètre pour inclure soit la gauche ou la droite de l'intervalle. Je pense à ma gauche/droite paramètre est désactivé à partir de votre exemple.labels = FALSE
est préféré auas.numeric()
pour ceux qui ont travaillé sur ces choses.Je pense que Greg réponses couvrir "standard operating procedure", mais je trouve beaucoup d'utilisations pour le findInterval fonction. Il revient naturellement un certain nombre qui identifie l'intervalle dans le deuxième argument.
Juste pour montrer un autre (similaire à recoder dans SPSS) méthode de paquet voiture:
Juste pour l'intégralité et de l'info, la classInt paquet (sur CRAN) est un autre moyen très pratique pour classer les nombres dans les classes.