2016-08-23 6 views
3

Ich gruppiere Daten und fasse sie dann zusammen, möchte aber auch eine andere Spalte beibehalten. Ich muss den Inhalt dieser Spalte nicht auswerten, da sie immer der Spalte group_by entspricht. Ich kann es der group_by-Anweisung hinzufügen, aber das scheint nicht "richtig". Ich möchte State.Full.Name nach der Gruppierung von State beibehalten. DankR - dplyr Zusammenfassen und Beibehalten anderer Spalten

TDAAtest <- data.frame(State=sample(state.abb,1000,replace=TRUE)) 
TDAAtest$State.Full.Name <- state.name[match(TDAAtest$State,state.abb)] 


TDAA.states <- TDAAtest %>% 
    filter(!is.na(State)) %>% 
    group_by(State) %>% 
    summarize(n=n()) %>% 
    ungroup() %>% 
    arrange(State) 
+0

welche Spalte Sie 'summarise' zu ​​wollen? Basierend auf dem Code, tun Sie es durch die beiden Spalten – akrun

+0

Es ist wahrscheinlich die beste Gruppierung von beiden. Die Alternative ist 'summieren (State.Full.Name = unique (State.Full.Name), n = n())', was weniger prägnant ist. – alistaire

+0

@akrun Ich geklärt. Ich war in meiner nicht so "richtigen" Herangehensweise gegangen. – atclaus

Antwort

8

Vielleicht brauchen wir

TDAAtest %>% 
    filter(!is.na(State)) %>% 
    group_by(State) %>% 
    summarise(State.Full.Name = first(State.Full.Name), n = n()) 

Oder mutate verwenden, um die Spalte zu erstellen und führen Sie dann die distinct

TDAAtest %>% f 
    filter(!is.na(State)) %>% 
    group_by(State) %>% 
    mutate(n= n()) %>% 
    distinct(State, .keep_all=TRUE) 
Verwandte Themen