Menu
CoddyTech

Giới thiệu về dplyr

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

Gói dplyr là một công cụ mạnh mẽ để thao tác dữ liệu trong R. Gói này cung cấp một tập hợp các hàm giúp bạn dễ dàng chuyển đổi và phân tích khung dữ liệu một cách hiệu quả. Trong bài học này, chúng ta sẽ tập trung vào ba hàm chính: select(), filter() và mutate().

Tải dplyr

Đây là ví dụ về cách tải gói:

# Nạp dplyr
library(dplyr)

Hàm select()

Hàm select() cho phép bạn chọn các cột cụ thể từ một khung dữ liệu:

# Tạo một khung dữ liệu mẫu
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  city = c("New York", "London", "Paris")
)

# Chọn các cột cụ thể
result <- select(df, name, age)
print(result)

Đầu ra:

  name    age
1 Alice   25
2 Bob     30
3 Charlie 35

Hàm filter()

Hàm filter() giúp bạn chọn các hàng dựa trên những điều kiện cụ thể:

# Lọc các hàng có age lớn hơn 28
result <- filter(df, age > 28)
print(result)

Đầu ra:

  name     age city
1 Bob      30  London
2 Charlie  35  Paris

Hàm mutate()

Hàm mutate() cho phép bạn tạo cột mới hoặc chỉnh sửa các cột hiện có:

# Thêm cột mới 'age_group'
result <- mutate(df, age_group = ifelse(age < 30, "Young", "Adult"))
print(result)

Đầu ra:

    name age    city age_group
1  Alice  25 New York     Young
2    Bob  30   London     Adult
3 Charlie  35    Paris     Adult

Toán tử pipe %>%

dplyr giới thiệu toán tử pipe %>%, cho phép bạn kết hợp nhiều thao tác:

result <- df %>%
  filter(age > 28) %>%
  select(name, city) %>%
  mutate(location = paste(name, "lives in", city))
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

Dễ

Xử lý khung dữ liệu (data frame) chứa thông tin nhân viên bằng các hàm (function) của dplyr. Thực hiện các thao tác sau:

  1. Chỉ chọn các cột "name", "age" và "salary"
  2. Lọc dữ liệu để chỉ giữ lại nhân viên từ 30 tuổi trở lên
  3. Thêm cột mới tên là "bonus", có giá trị bằng 10% mức lương của nhân viên từ 40 tuổi trở lên và bằng 5% với những người còn lại
  4. Sắp xếp khung dữ liệu theo mức lương giảm dần
  5. In ra khung dữ liệu kết quả.

Tự làm thử

# Nạp thư viện cần thiết
suppressPackageStartupMessages(library(dplyr))

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

# Tạo khung dữ liệu từ đầu vào
df <- read.csv(text = input_data, stringsAsFactors = FALSE)

# TODO: Viết code bên dưới để xử lý khung dữ liệu
process_employee_data <- function(df) {
  # Viết code của bạn ở đây
  # Dùng các hàm của dplyr để:
  # 1. Chọn các cột
  # 2. Lọc dữ liệu
  # 3. Thêm cột thưởng
  # 4. Sắp xếp theo lương
  
  return(df)  # Thay phần này bằng khung dữ liệu đã xử lý
}

# Xử lý khung dữ liệu
result <- process_employee_data(df)

# In kết quả ra
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