Bài học theo mô-đun (2/2)
Đột biến và tập hợp
Ngoài việc chọn và lọc, dplyr còn cung cấp các khả năng mạnh mẽ để tạo các cột được tính toán mới và tóm tắt dữ liệu bằng cách tổng hợp dữ liệu thành các nhóm.
Tạo cột mới: mutate()
Động từ mutate() cho phép bạn tính toán các cột mới hoặc sửa đổi các cột hiện có trong khi vẫn giữ nguyên tất cả các cột ban đầu.
# 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
)Nhóm và tổng hợp: group_by() và summarise()
Thông thường, phân tích dữ liệu yêu cầu tính toán số liệu thống kê tóm tắt (ví dụ: trung bình, tổng, số lượng) cho các nhóm hàng cụ thể (ví dụ: tính mức lương trung bình cho từng bộ phận).
1. group_by()
Nhóm khung dữ liệu theo giá trị của một hoặc nhiều cột. Bản thân nó không thay đổi hình thức trực quan của dữ liệu nhưng nó báo hiệu cho dplyr rằng các hoạt động tiếp theo sẽ được thực hiện "theo nhóm".
2. summarise() (hoặc summarize())
Thu gọn nhiều hàng thành một hàng tóm tắt bằng cách áp dụng các hàm thống kê như mean(), sum(), min(), max() hoặc n() (đếm các hàng).
# Calculates the average salary per department
df %>%
group_by(department) %>%
summarise(mean_salary = mean(salary))Nếu bạn muốn đếm có bao nhiêu bản ghi thuộc về mỗi nhóm:
# Counts how many employees are in each city
df %>%
group_by(city) %>%
summarise(count = n())Hãy tự mình thử
Bài tập 1: Tạo cột tính toán
Cho khung dữ liệu df, tạo một cột mới tên là Total_price bằng cách nhân cột số lượng với cột giá bằng cách sử dụng mutate(). Lưu kết quả vào df_new.
Hiển thị gợi ý
Sử dụng mutate(total_price = số lượng * giá) bên trong một đường dẫn trên df.
Giải pháp khả dụng sau 3 lần thử
Bài tập 2: Nhóm và tổng hợp với giá trị trung bình
Tính giá trị trung bình của cột lương, nhóm các bản ghi theo cột phòng ban. Lưu cột tổng hợp với tên Mean_salary và gán kết quả cuối cùng cho df_grouped.
Hiển thị gợi ý
Hoa Kỳ df %>% group_by(bộ phận) %>% tóm tắt(mean_salary = Mean(salary))
Giải pháp khả dụng sau 3 lần thử
Bài tập 3: Đếm các phần tử theo nhóm
Đếm số hàng cho mỗi thành phố (cột thành phố). Gán số đếm cho biến count bên trong summarise() bằng hàm n() và lưu kết quả cuối cùng vào df_counts.
Hiển thị gợi ý
Kết hợp nhóm_by(city) với tóm tắt(count = n()) trong một đường dẫn.
Giải pháp khả dụng sau 3 lần thử
Bài tập 4: Tóm tắt nhiều lần
Tính giá trị tối thiểu (min_price) và giá trị tối đa (max_price) của cột giá nhóm theo cột danh mục. Lưu kết quả vào df_summary.
Hiển thị gợi ý
Bên trong tóm tắt(), hãy phân tách các số liệu min_price = min(price) và max_price = max(price) bằng dấu phẩy.
Giải pháp khả dụng sau 3 lần thử
Bài tập 5: Nhóm và kết hợp các bộ lọc
Viết một quy trình nhóm nhóm df theo cột phòng ban, tính toán giá trị trung bình của mức lương tiết kiệm được trong cột mới avg_salary bằng cách sử dụng mutate() (Lưu ý: sử dụng biến đổi, không phải tóm tắt, để giữ tất cả các hàng) và cuối cùng lọc để chỉ giữ lại các bản ghi có mức lương lớn hơn avg_salary. Lưu ở độ phân giải.
Hiển thị gợi ý
Hoa Kỳ df %>% group_by(department) %>% mutate(avg_salary = Mean(salary)) %>% filter(salary > avg_salary)
Giải pháp khả dụng sau 3 lần thử