Pelajaran modul (2/2)
Mutasi dan Agregasi
Selain memilih dan memfilter, dplyr menawarkan kemampuan canggih untuk membuat kolom terhitung baru dan meringkas data dengan menggabungkannya ke dalam kelompok.
Membuat Kolom Baru: mutate()
Kata kerja mutate() memungkinkan Anda menghitung kolom baru atau memodifikasi kolom yang sudah ada, sekaligus menjaga semua kolom asli tetap utuh.
# 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
)Pengelompokan dan Agregasi: group_by() dan summarise()
Seringkali, analisis data memerlukan penghitungan statistik ringkasan (misalnya rata-rata, jumlah, hitungan) untuk kelompok baris tertentu (misalnya, menghitung gaji rata-rata untuk setiap departemen).
1.group_by()
Mengelompokkan bingkai data berdasarkan nilai dari satu atau beberapa kolom. Dengan sendirinya, ini tidak mengubah tampilan visual data, namun memberi sinyal kepada dplyr bahwa operasi selanjutnya harus dijalankan "kelompok demi kelompok".
2. summarise() (atau summarize())
Meruntuhkan banyak baris menjadi satu baris ringkasan dengan menerapkan fungsi statistik seperti mean(), sum(), min(), max(), atau n() (yang menghitung baris).
# Calculates the average salary per department
df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary))Jika Anda ingin menghitung berapa banyak rekaman yang dimiliki setiap grup:
# Counts how many employees are in each city
df %>%
group_by(city) %>%
summarise(count = n())Cobalah sendiri
Latihan 1: Buat kolom terhitung
Dengan adanya bingkai data df, buat kolom baru bernama total_price dengan mengalikan kolom kuantitas dengan kolom harga menggunakan mutate(). Simpan hasilnya di df_new.
Tunjukkan petunjuk
Gunakan mutate(total_price = quantity * price) di dalam pipa di df.
Solusi tersedia setelah 3 upaya
Latihan 2: Kelompokkan dan rangkum dengan mean
Hitung rata-rata kolom gaji, kelompokkan catatan berdasarkan kolom departemen. Simpan kolom gabungan dengan nama mean_salary dan tetapkan hasil akhirnya ke df_grouped.
Tunjukkan petunjuk
USA df %>% group_by(departemen) %>% ringkasan(rata-rata gaji = rata-rata(gaji))
Solusi tersedia setelah 3 upaya
Latihan 3: Hitung elemen per grup
Hitung jumlah baris untuk setiap kota (kolom kota). Tetapkan hitungan ke variabel count di dalam summarise() menggunakan fungsi n(), dan simpan hasil akhirnya di df_counts.
Tunjukkan petunjuk
Gabungkan group_by(city) dengan ringkasan(count = n()) dalam satu saluran pipa.
Solusi tersedia setelah 3 upaya
Latihan 4: Beberapa ringkasan
Hitung nilai minimum (min_price) dan nilai maksimum (max_price) dari kolom harga yang dikelompokkan berdasarkan kolom kategori. Simpan hasilnya di df_summary.
Tunjukkan petunjuk
Di dalam summarise(), pisahkan metrik min_price = min(price) dan max_price = max(price) dengan koma.
Solusi tersedia setelah 3 upaya
Latihan 5: Mengelompokkan dan menggabungkan filter
Tulis alur yang mengelompokkan df berdasarkan kolom departemen, hitung rata-rata simpanan gaji di kolom baru avg_salary menggunakan mutate() (Catatan: gunakan mutate, bukan summarise, untuk menyimpan semua baris), dan terakhir filter untuk hanya menyimpan catatan dengan gaji yang lebih besar dari avg_salary. Simpan di res.
Tunjukkan petunjuk
Usa df %>% group_by(departemen) %>% mutate(avg_salary = mean(gaji)) %>% filter(gaji > avg_salary)
Solusi tersedia setelah 3 upaya