2016-08-23 9 views
3

データをグループ化して集計していますが、別の列を保持することもできます。その列の内容を評価する必要はありません。なぜなら、常にgroup_by列と同じであるからです。私はそれをgroup_byステートメントに追加できますが、それは "正しい"とは思われません。私はStateでグループ化した後にState.Full.Nameを保持したいと思います。おかげR - dplyr他の列を要約して保持する

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

しますか?コードに基づいて、両方の列でそれを実行しています – akrun

+0

おそらく両方でグループ化するのが最適です。代わりに 'summarize(State.Full.Name = unique(State.Full.Name)、n = n())'があります。これはあまり簡潔ではありません。 – alistaire

+0

@akrun私は明確にしました。私はそれほど「正しい」アプローチではなくなった。 – atclaus

答えて

8

はおそらく、我々は

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

または列を作成するためにmutateを使う必要があり、あなたが `summarise`したい列distinct

TDAAtest %>% f 
    filter(!is.na(State)) %>% 
    group_by(State) %>% 
    mutate(n= n()) %>% 
    distinct(State, .keep_all=TRUE) 
関連する問題