Rのdplyrパッケージのgroup_by関数は指定した列をグルーピングできるので便利ですが、文字列を指定できません。
このパッケージのgroup_by_関数は文字列を指定できますが、複数の文字列を指定する場合には少し工夫が必要になります。
このパッケージのgroup_by_関数は文字列を指定できますが、複数の文字列を指定する場合には少し工夫が必要になります。
ここでは、異なるダイエットの雛の体重と年齢が収められているChickWeightをサンプルデータとします。
library(dplyr)
data(ChickWeight)
str(ChickWeight)
Classes ‘nfnGroupedData’, ‘nfGroupedData’, ‘groupedData’ and 'data.frame': 578 obs. of 4 variables:
$ weight: num 42 51 59 64 76 93 106 125 149 171 ...
$ Time : num 0 2 4 6 8 10 12 14 16 18 ...
$ Chick : Ord.factor w/ 50 levels "18"<"16"<"15"<..: 15 15 15 15 15 15 15 15 15 15 ...
$ Diet : Factor w/ 4 levels "1","2","3","4": 1 1 1 1 1 1 1 1 1 1 ...
- attr(*, "formula")=Class 'formula' language weight ~ Time | Chick
.. ..- attr(*, ".Environment")=
- attr(*, "outer")=Class 'formula' language ~Diet
.. ..- attr(*, ".Environment")=
- attr(*, "labels")=List of 2
..$ x: chr "Time"
..$ y: chr "Body weight"
- attr(*, "units")=List of 2
..$ x: chr "(days)"
..$ y: chr "(gm)"
このデータは、Chick列とDiet列がFactorとなっていますので、この列を文字列としてグルーピングするコードは次のようになります。
ここでは、新たにn列をグルーピングされた集合の度数として追加しました。
ChickWeight %>% group_by_(.dots = lapply(c("Chick", "Diet"), as.symbol)) %>% summarise(n = n())
# A tibble: 50 x 3
# Groups: Chick [?]
Chick Diet n
1 18 1 2
2 16 1 7
3 15 1 8
4 13 1 12
5 9 1 12
6 20 1 12
7 10 1 12
8 8 1 11
9 17 1 12
10 19 1 12
# ... with 40 more rows
R×dplyr group_by_関数で複数の文字列を指定する方法