モジュールのレッスン (2/2)
突然変異と凝集
dplyr は、選択とフィルタリングを超えて、新しい計算列を作成し、データをグループに集約して要約する強力な機能を提供します。
新しい列の作成: mutate()
mutate() 動詞を使用すると、元の列をすべてそのまま保持したまま、新しい列を計算したり、既存の列を変更したりできます。
# 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 つの概要行にまとめます。
# Calculates the average salary per department
df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary))各グループに属するレコードの数を数えたい場合は、次のようにします。
# Counts how many employees are in each city
df %>%
group_by(city) %>%
summarise(count = n())自分で試してみてください
演習 1: 計算列を作成する
データ フレーム df を指定して、mutate() を使用して数量列と価格列を乗算して、total_price という新しい列を作成します。結果を df_new に保存します。
ヒントを表示
df のパイプライン内で mutate(total_price = 数量 * 価格) を使用します。
3 回の試行後に解決策が利用可能になります
演習 2: グループ化して平均値で要約する
部門列ごとにレコードをグループ化し、給与列の平均を計算します。集計された列をmean_salaryという名前で保存し、最終結果をdf_groupedに割り当てます。
ヒントを表示
アメリカ df %>% group_by(Department) %>% summarise(mean_salary = means(salary))
3 回の試行後に解決策が利用可能になります
演習 3: グループごとの要素を数える
各都市の行数 (都市列) をカウントします。 n() 関数を使用して summarise() 内の count 変数にカウントを代入し、最終結果を df_counts に保存します。
ヒントを表示
una パイプラインで group_by(city) con summarise(count = n()) を組み合わせます。
3 回の試行後に解決策が利用可能になります
演習 4: 複数の要約
カテゴリ列ごとにグループ化された価格列の最小値 (min_price) と最大値 (max_price) を計算します。結果を df_summary に保存します。
ヒントを表示
summarise() 内で、min_price = min(price) メトリクスと max_price = max(price) メトリクスをカンマで区切ります。
3 回の試行後に解決策が利用可能になります
演習 5: フィルタのグループ化と結合
df を部門列ごとにグループ化し、給与の平均を計算して mutate() を使用して新しい列 avg_salary に保存するパイプラインを作成します (注: すべての行を保持するには、summarise ではなく mutate を使用します)。最後に、給与が厳密に avg_salary より大きいレコードのみを保持するようにフィルタリングします。解像度に保存します。
ヒントを表示
アメリカ df %>% group_by(Department) %>% mutate(avg_salary = means(salary)) %>% filter(salary > avg_salary)
3 回の試行後に解決策が利用可能になります