J'ai un vecteur x qui contient des nombres positifs que je veux bin / discrétiser. Pour ce vecteur, je veux que les chiffres [0, 10) se présentent exactement comme ils existent dans le vecteur, mais les chiffres [10, ∞) doivent avoir 10 ans et plus.
J'utilise: P>
x <- c(0,1,3,4,2,4,2,5,43,432,34,2,34,2,342,3,4,2) binned.x <- as.factor(ifelse(x > 10,"10+",x))
3 Réponses :
Comment sur quels rendements: p> couper code>:
Cela semble plus compliqué que la solution dans la question.
Améliorations mineures: Swap 1E6 code> avec
Inf code>. Vous n'avez pas besoin
include.lowest = true code>. (Comparez les réponses en appelant
table (binned.x) code>.
@ROB: Oui, je ne peux pas dire que je suis en désaccord :) @Richie: merci! J'apprends toujours la langue, de sorte que vos "améliorations mineures" sont une aide majeure pour moi.
Votre question est incompatible. dans ce cas, vous pouvez tronquer les données à 10 (Si vous ne voulez pas de facteur): P>
Dans la description 10 code> appartient au groupe "10+", mais dans le code
10 code> est un niveau séparé.
Si
10 code> doit être strud> dans le groupe "10+", le code doit être
pmin(x, 10)
# [1] 0 1 3 4 2 4 2 5 10 10 10 2 10 2 10 3 4 2 10
x[x>=10]<-"10+" This will give you a vector of strings. You can use as.numeric(x) to convert back to numbers ("10+" become NA), or as.factor(x) to get your result above.Note that this will modify the original vector itself, so you may want to copy to another vector and work on that.
Qu'est-ce qui est kludgy à ce sujet? Ça me semble très soigné.
@ROB: Le principal inconvénient de cette approche est que vous ne recevez pas de niveaux de facteurs créés pour les valeurs qui ne sont pas là (par exemple, pour ces données, il n'y a pas de niveau "6"). Cela pourrait être corrigé avec des niveaux explicites dans l'appel à
facteur code>.