2016-07-07 15 views
0

Ich lief dies, um die Anzahl der verschiedenen Mitglieder nach Altersgruppe in der Res1-Datensatz zu erhalten. Die Zählung ist jedoch nicht gruppiert und die Anzahl, die Sie unten sehen, ist für den gesamten Datensatz. Ich bin mir nicht sicher, wo ich falsch liege. Kann mir bitte jemand dabei helfen? Vielen Dank!Problem beim Gruppieren von Daten in R mit dplyr

res1 %>% group_by(Age_Group = res1[,'age_group']) %>% 
     summarise(Count = n_distinct(res1[,'ID'])) 
Source: local data frame [10 x 2] 

# Age_Group    Count 
#  <fctr>    <int> 
#1  >= 90   5000 
#2  0-9   5000 
#3  10-19   5000 
#4  20-29   5000 
#5  30-39   5000 
#6  40-49   5000 
#7  50-59   5000 
#8  60-69   5000 
#9  70-79   5000 
#10  80-89   5000 
+0

Verwenden 'res1%>% group_by (age_group) arbeiten%>% summarize (Count = n_distinct (ID)) '. Beziehen Sie sich nicht auf den ursprünglichen Datenrahmen in nachfolgenden dplyr-Schritten. Das bricht die Kette. Verwenden Sie nicht angegebene Spaltennamen. – MrFlick

+0

@MrFlick Vielen Dank. – NM24

Antwort

1

Wenn Sie die Leitungsbetreiber %>% verwenden sie füttert, was auf der linken Seite des Operators ist als die erste Eingabe an die Funktion auf der rechten Seite des Betreibers. Wenn Sie von der group_by-Anweisung in die summarize-Anweisung verzweigen, gibt es einen versteckten unbenannten gruppierten Datenrahmen. Aber wenn Sie Count als n_distinct(res1[,'ID']) definieren, rufen Sie zurück zum ursprünglichen nicht gruppierten data.frame res1, und nicht das gruppierte data.frame, das Sie in dem group_by-Aufruf erstellten. Deshalb gibt es Ihnen die Gesamtzahl, nicht die Anzahl pro Gruppe.

In einer dplyr Pipeline wie folgt aus, um die nicht notierten Spaltennamen nur nennen soll, so ist dies:

res1 %>% group_by(Age_Group = age_group) %>% 
summarise(Count = n_distinct(ID)) 

sollte

+0

Vielen Dank! Das macht Sinn. – NM24

+0

Wenn eine Antwort Ihre Frage beantwortet und Ihr Problem gelöst hat, können Sie dies durch Akzeptieren der Antwort anzeigen (das Häkchen unter den Pfeilen nach oben und nach unten). –