Dplyr: データを要約してすべての列を保持する方法
dplyrでsummarise()関数を使用すると、 summarise()関数またはgroup_by()関数に含まれていない変数は自動的に削除されます。
ただし、 mutate()関数を使用すると、データ フレーム内のすべての列を保持したままデータを要約できます。
次の例は、この関数を実際に使用する方法を示しています。
例: dplyr を使用してデータを要約するが、すべての列を保持する
さまざまなバスケットボール選手に関する情報を含む次のデータ フレームがあるとします。
#create data frame df <- data. frame (team=rep(c(' A ', ' B ', ' C '), each= 3 ), points=c(4, 9, 8, 12, 15, 14, 29, 30, 22), assists=c(3, 3, 2, 5, 8, 10, 4, 5, 12)) #view data frame df team points assists 1 to 4 3 2 to 9 3 3 to 8 2 4 B 12 5 5 B 15 8 6 B 14 10 7 C 29 4 8 C 30 5 9 C 22 12
次の構文を使用して、チームごとの平均得点を要約できます。
library (dplyr) #summarize mean points values by team df %>% group_by(team) %>% summarize(mean_pts = mean(points)) # A tibble: 3 x 2 team mean_pts 1 to 7 2 B 13.7 3 C 27
Mean_ptsという列には、各チームが獲得した平均ポイントが表示されます。
結果から次のことがわかります。
- チーム A の選手が獲得した平均得点は7です。
- チーム B の選手が獲得した平均得点は13.7です。
- チーム C の選手が獲得した平均得点は27です。
ただし、元のデータ フレームの他のすべての列を保持したいとします。
これを行うには、 mutate()関数で次の構文を使用できます。
library (dplyr) #summarize mean points values by team and keep all columns df %>% group_by(team) %>% mutate(mean_pts = mean(points)) %>% A group() # A tibble: 9 x 4 team points assists mean_pts 1 to 4 3 7 2 to 9 3 7 3 to 8 2 7 4 B 12 5 13.7 5 B 15 8 13.7 6 B 14 10 13.7 7 C 29 4 27 8 C 30 5 27 9 C 22 12 27
mutate()関数を使用すると、元のデータ フレームの他のすべての列を保持しながら、チームごとの平均得点を要約するMean_ptsという新しい列を作成できます。
追加リソース
次のチュートリアルでは、dplyr で他の一般的なタスクを実行する方法を説明します。
dplyr: 列に文字列が含まれている場合に変数を変更する方法
dplyr: mutate() を使用して因子レベルを変更する方法
dplyr: 複数の列を追加する方法