Chuyển đến nội dung chính
Mô-đun 4 · Bài học 2 trong tổng số 28/10 trong khóa học~15 min
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.

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
  )

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).

R
# 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:

R
# 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

tập thể dục#r.m4.l2.e1
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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ập thể dục#r.m4.l2.e2
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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

tập thể dục#r.m4.l2.e3
Nỗ lực: 0Đang tải…

Đế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.

Đang tải trình chỉnh sửa…
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ập thể dục#r.m4.l2.e4
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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

tập thể dục#r.m4.l2.e5
Nỗ lực: 0Đang tải…

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.

Đang tải trình chỉnh sửa…
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ử