メインコンテンツにスキップ
モジュール 4 · レッスン 2 / 2コース内の 8/10~15 min
モジュールのレッスン (2/2)

突然変異と凝集

dplyr は、選択とフィルタリングを超えて、新しい計算列を作成し、データをグループに集約して要約する強力な機能を提供します。


新しい列の作成: mutate()

mutate() 動詞を使用すると、元の列をすべてそのまま保持したまま、新しい列を計算したり、既存の列を変更したりできます。

R
# Adds a 'double_salary' column computed as 'salary' multiplied by 2
df %>%
  mutate(double_salary = salary * 2)

# You can create multiple columns at once
df %>%
  mutate(
    total_cost = quantity * price,
    tax = total_cost * 0.22
  )

グループ化と集計: group_by() および summarise()

多くの場合、データ分析では、特定の行グループの要約統計量 (平均、合計、数など) を計算する必要があります (各部門の平均給与の計算など)。

1. group_by()

1 つ以上の列の値によってデータ フレームをグループ化します。それ自体ではデータの外観は変わりませんが、後続の操作を「グループごとに」実行する必要があることを dplyr に通知します。

2. summarise() (または summarize())

mean()、sum()、min()、max()、または n() (行数をカウントする) などの統計関数を適用することにより、多くの行を 1 つの概要行にまとめます。

R
# Calculates the average salary per department
df %>%
  group_by(department) %>%
  summarise(mean_salary = mean(salary))

各グループに属するレコードの数を数えたい場合は、次のようにします。

R
# Counts how many employees are in each city
df %>%
  group_by(city) %>%
  summarise(count = n())

自分で試してみてください

演習 1: 計算列を作成する

運動#r.m4.l2.e1
試行回数: 0読み込み中…

データ フレーム df を指定して、mutate() を使用して数量列と価格列を乗算して、total_price という新しい列を作成します。結果を df_new に保存します。

エディターを読み込み中…
ヒントを表示

df のパイプライン内で mutate(total_price = 数量 * 価格) を使用します。

3 回の試行後に解決策が利用可能になります

演習 2: グループ化して平均値で要約する

運動#r.m4.l2.e2
試行回数: 0読み込み中…

部門列ごとにレコードをグループ化し、給与列の平均を計算します。集計された列をmean_salaryという名前で保存し、最終結果をdf_groupedに割り当てます。

エディターを読み込み中…
ヒントを表示

アメリカ df %>% group_by(Department) %>% summarise(mean_salary = means(salary))

3 回の試行後に解決策が利用可能になります

演習 3: グループごとの要素を数える

運動#r.m4.l2.e3
試行回数: 0読み込み中…

各都市の行数 (都市列) をカウントします。 n() 関数を使用して summarise() 内の count 変数にカウントを代入し、最終結果を df_counts に保存します。

エディターを読み込み中…
ヒントを表示

una パイプラインで group_by(city) con summarise(count = n()) を組み合わせます。

3 回の試行後に解決策が利用可能になります

演習 4: 複数の要約

運動#r.m4.l2.e4
試行回数: 0読み込み中…

カテゴリ列ごとにグループ化された価格列の最小値 (min_price) と最大値 (max_price) を計算します。結果を df_summary に保存します。

エディターを読み込み中…
ヒントを表示

summarise() 内で、min_price = min(price) メトリクスと max_price = max(price) メトリクスをカンマで区切ります。

3 回の試行後に解決策が利用可能になります

演習 5: フィルタのグループ化と結合

運動#r.m4.l2.e5
試行回数: 0読み込み中…

df を部門列ごとにグループ化し、給与の平均を計算して mutate() を使用して新しい列 avg_salary に保存するパイプラインを作成します (注: すべての行を保持するには、summarise ではなく mutate を使用します)。最後に、給与が厳密に avg_salary より大きいレコードのみを保持するようにフィルタリングします。解像度に保存します。

エディターを読み込み中…
ヒントを表示

アメリカ df %>% group_by(Department) %>% mutate(avg_salary = means(salary)) %>% filter(salary > avg_salary)

3 回の試行後に解決策が利用可能になります