2016-12-04 3 views
0

BeispieldatenGruppieren von Daten in R mit einem neuen Spaltennamen

Name: test 
id age 
1 25 
2 48 
3 77 
4 17 
5 27 

Ich wollte eine neue Spalte hinzuzufügen genannt age_group so fügte ich hinzu:

test$age_group<-NA 

In dieser neuen Spalte ich hinzufügen wollte Gruppe (offensichtlich) nach Alter.

<18=1 
19-30=2 
31-45=3 
46-60=4 
61-75=5 
>76 = 6 

so würden die Daten wie folgt aussehen jetzt:

id age age_group 
1 25 2 
2 48 4 
3 77 6 
4 17 1 
5 27 2 

Kann jemand helfen mit dem Code auf, wie age_group zu füllen?

+1

Sie werden in aussehen soll 'schneiden()' –

+0

age_group [test $ Alter> 0 test $ Alter <= 18] <- 1 –

Antwort

1

Try this:

df$age_group <- cut(df$age, breaks = c(0,18,30,45,60,75,Inf), labels = 1:6) 

# id age age_group 
#1 1 25   2 
#2 2 48   4 
#3 3 77   6 
#4 4 17   1 
#5 5 27   2 
+0

Fehler in cut.default (df $ age_group, Brüche = c (0,18,30,45,60,75, Inf 'x' muss numerisch sein –

+0

aber danke für Ihre Hilfe ! –

+0

@laura warum diese 'cut.default (df $ age_group, ...)' 'es ist nicht was ich antworte ed. Sie müssen die Spalte 'age_group' vorher nicht erstellen. Wenn Sie das Ergebnis des Schnitts zuweisen, wird die Spalte automatisch erstellt. Sie erhalten den Fehler wahrscheinlich, weil "df $ age_group" alles "NA" ist. Bitte beachten Sie, dass das erste Argument von 'cut'' df $ age' ist! – 989

0

Hier ist eine weitere effiziente Möglichkeit mit findInterval

findInterval(test$age, c(0, 18, 30,45, 60, 75, Inf)) 
#[1] 2 4 6 1 2