Menu
CoddyTech

Tổng hợp dữ liệu với dplyr

Bài học 7 trên 14 trong khóa học Thao tác dữ liệu trong R của Coddy.

Tổng hợp dữ liệu là bước quan trọng trong phân tích dữ liệu, giúp bạn tóm tắt và rút ra thông tin hữu ích từ tập dữ liệu. Package dplyr trong R cung cấp các hàm mạnh mẽ để tổng hợp dữ liệu, đặc biệt là group_by() và summarize(). Hãy cùng tìm hiểu cách sử dụng các hàm này hiệu quả.

Hàm group_by()

Hàm group_by() cho phép bạn nhóm dữ liệu dựa trên một hoặc nhiều biến. Đây thường là bước đầu tiên khi tổng hợp dữ liệu.

# Khung dữ liệu mẫu
df <- data.frame(
  category = c("A", "B", "A", "B", "A"),
  value = c(10, 15, 20, 25, 30)
)

# Nhóm dữ liệu theo category
grouped_df <- group_by(df, category)
print(grouped_df)

Đầu ra:

# Một tibble: 5 × 2
# Nhóm:   category [2]
  category value
  <chr>    <dbl>
1 A           10
2 B           15
3 A           20
4 B           25
5 A           30

Hàm summarize()

Sau khi nhóm dữ liệu, hãy dùng summarize() để tính các thống kê tóm tắt cho từng nhóm.

# Tính giá trị trung bình cho từng nhóm
result <- summarize(grouped_df, mean_value = mean(value))
print(result)

Đầu ra:

# A tibble: 2 × 2
  category mean_value
  <chr>        <dbl>
1 A             20
2 B             20

Kết hợp group_by() và summarize()

Bạn có thể nối các hàm này bằng toán tử pipe %>% để code dễ đọc hơn:

result <- df %>%
  group_by(category) %>%
  summarize(mean_value = mean(value),
            sum_value = sum(value),
            count = n())
print(result)

Đầu ra:

# A tibble: 2 × 4
  category mean_value sum_value count
  <chr>        <dbl>     <dbl> <int>
1 A              20        60     3
2 B              20        40     2

Nhiều thống kê tóm tắt

Bạn có thể tính nhiều thống kê trong một lần gọi summarize():

result <- df %>%
  group_by(category) %>%
  summarize(
    mean_value = mean(value),
    min_value = min(value),
    max_value = max(value),
    count = n()
  )
print(result)

Đầu ra:

# A tibble: 2 × 5
  category mean_value min_value max_value count
  <chr>         <dbl>     <dbl>     <dbl> <int>
1 A              20         10        30     3
2 B              20         15        25     2
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

challenge icon

Thử thách

Trung bình

Tạo một hàm xử lý dữ liệu bán hàng bằng các hàm dplyr. Hàm cần thực hiện các thao tác sau:

  1. Nhóm dữ liệu theo danh mục sản phẩm
  2. Tính các số liệu thống kê tổng hợp sau cho từng nhóm:
    • Tổng doanh số
    • Giá trung bình
    • Số mặt hàng đã bán
  3. Sắp xếp kết quả theo tổng doanh số giảm dần
  4. Trả về khung dữ liệu đã xử lý

In khung dữ liệu kết quả.

Tự làm thử

# Đọc đầu vào
con <- file("stdin", "r")
input_data <- suppressWarnings(readLines(con))


# Chuyển chuỗi đầu vào thành khung dữ liệu
suppressPackageStartupMessages(library(dplyr))
suppressPackageStartupMessages(library(readr))

sales_data <- read.csv(paste(input_data, collapse = "\n"))

# TODO: Viết code bên dưới để xử lý dữ liệu bán hàng
# Gợi ý: Dùng các hàm của dplyr như group_by(), summarize(), arrange(), desc()

process_sales_data <- function(data) {
  # Viết code tại đây
  
  # Trả về khung dữ liệu đã xử lý
  return(data)
}

# Xử lý dữ liệu bán hàng
result <- process_sales_data(sales_data)

# In ra kết quả
print(result)

Tất cả bài học trong Thao tác dữ liệu trong R

Tự luyện tập: Trình biên dịch R online