R でパイプ演算子を使用する方法 (例付き)
R でパイプ演算子 ( %>% ) を使用すると、一連の操作をまとめて「パイプ」できます。
この演算子は、データ フレームに対して一連の操作を実行するために、R のdplyrパッケージとともに最も一般的に使用されます。
パイプ演算子の基本構文は次のとおりです。
df %>%
do_this_operation %>%
then_do_this_operation %>%
then_do_this_operation ...
パイプ演算子は、1 つの演算の結果をその下の次の演算に渡すだけです。
パイプ演算子を使用する利点は、コードが非常に読みやすくなることです。
次の例は、R に組み込まれているmtcarsデータセットを使用して、さまざまなシナリオでパイプ演算子を使用する方法を示しています。
#view first six rows of mtcars dataset
head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3,460 20.22 1 0 3 1
例 1: パイプ演算子を使用して変数を要約する
次のコードは、パイプ演算子 ( %>% ) を使用してcyl変数でグループ化し、 mpg変数の平均値を集計する方法を示しています。
library (dplyr)
#summarize mean mpg grouped by cyl
mtcars %>%
group_by(cyl) %>%
summarize(mean_mpg = mean(mpg))
# A tibble: 3 x 2
cyl mean_mpg
1 4 26.7
2 6 19.7
3 8 15.1
結果から次のことがわかります。
- Cyl 値が 4 の車の平均 mpg 値は26.7です。
- Cyl 値が 6 の車の平均 mpg 値は19.7です。
- Cyl 値が 8 の車の平均 mpg 値は15.1です。
パイプ演算子によってコードの解釈が容易になることにも注目してください。
基本的に、彼は次のように言います。
- mtcarsデータ フレームを取得します。
- cyl変数でグループ化します。
- 次に、 mpg変数の平均値を要約します。
例 2: パイプ演算子を使用して複数の変数をグループ化および要約する
次のコードは、パイプ演算子 ( %>% ) を使用してcyl変数とam変数でグループ化し、 mpg変数の平均とhp変数の標準偏差を要約する方法を示しています。
library (dplyr)
#summarize mean mpg and standard dev of hp grouped by cyl and am
mtcars %>%
group_by(cyl, am) %>%
summarize(mean_mpg = mean(mpg),
sd_hp = sd(hp))
# A tibble: 6 x 4
# Groups: cyl[3]
cyl am mean_mpg sd_hp
1 4 0 22.9 19.7
2 4 1 28.1 22.7
3 6 0 19.1 9.18
4 6 1 20.6 37.5
5 8 0 15.0 33.4
6 8 1 15.4 50.2
結果から次のことがわかります。
- cyl 値が 4、am 値が 0 の車の場合、平均 mpg 値は22.9 、hp 値の標準偏差は19.7です。
- cyl 値が 4、am 値が 1 の車の場合、平均 mpg 値は28.1 、hp 値の標準偏差は22.7です。
等々。
繰り返しますが、パイプ演算子によってコードの解釈が容易になることに注目してください。
基本的に、彼は次のように言います。
- mtcarsデータ フレームを取得します。
- それを変数cylとamでグループ化します。
- 次に、 mpg変数の平均値とhp変数の標準偏差を要約します。
例 3: パイプ演算子を使用して新しい変数を作成する
次のコードは、 dplyrパッケージのmutate関数でパイプ演算子 ( %>% ) を使用して、mtcars データ フレームに 2 つの新しい変数を作成する方法を示しています。
library (dplyr)
#add two new variables in mtcars
new_mtcars <- mtcars %>%
mutate(mpg2 = mpg*2,
mpg_root = sqrt(mpg))
#view first six rows of new data frame
head(new_mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb mpg2 mpg_root
1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 42.0 4.582576
2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 42.0 4.582576
3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 45.6 4.774935
4 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 42.8 4.626013
5 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 37.4 4.324350
6 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 36.2 4.254409
結果から次のことがわかります。
- 新しいmpg2列には、 mpg列の値を 2 倍した値が含まれます。
- 新しいmpg_root列には、 mpg列の値の平方根が含まれます。
繰り返しますが、パイプ演算子によってコードの解釈が容易になることに注目してください。
基本的に、彼は次のように言います。
- mtcarsデータ フレームを取得します。
- mpg2という新しい列とmpg_rootという新しい列を作成します。
関連: dplyr での transmute() 関数の使用方法
追加リソース
次のチュートリアルでは、R の他の一般的な関数の使用方法について説明します。
R でチルダ演算子 (~) を使用する方法
R でドル記号演算子 ($) を使用する方法
R で「NOT IN」演算子を使用する方法
R で %in% 演算子を使用する方法