9
votes

Créer une variable catégorique en r basée sur la plage

J'ai un fichier de données avec une colonne d'entiers que je voudrais utiliser comme référence pour faire une nouvelle variable catégorique. Je tiens à diviser la variable en trois groupes et à définir les gammes moi-même (c'est-à-dire 0-5, 6-10, etc.). J'ai essayé couper mais qui divise la variable en groupes en fonction d'une distribution normale et mes données sont droites. J'ai également essayé d'utiliser si / puis des déclarations, mais cela génère une valeur véritable / fausse et je voudrais garder ma variable d'origine. Je suis sûr qu'il y a un moyen simple de le faire, mais je ne peux pas sembler comprendre. Tout conseiller sur un moyen simple de le faire rapidement?

J'ai eu quelque chose en tête comme ceci: xxx


0 commentaires

3 Réponses :


18
votes
x <- rnorm(100,10,10)
cut(x,c(-Inf,0,5,6,10,Inf))

0 commentaires

12
votes

La réponse de Ian ( Couper ) est le moyen le plus courant de le faire, autant que je sache.

Je préfère utiliser shingle , à partir du package treillis

L'argument qui spécifie les intervalles de binning me semble un peu plus intuitif pour moi.

Vous utilisez shingle comme: xxx


2 commentaires

Belle solution si vous vous souciez de configurer une matrice de valeurs min et max. Cela peut être fastidieux si vous avez une plage dynamique.


@ Roman, je pensais exactement à ça. J'ai un problème similaire mais avec des gammes dynamiques. Avez-vous des suggestions comment procéder dans ce cas?



2
votes

Nous pouvons utiliser smart_cut à partir du package cuttr : xxx

à couper avec intervalles de longueur 5 commençant sur 1: xxx

pour obtenir exactement votre sortie demandée: xxx

plus sur CUTR et SMART_CUT


0 commentaires