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 35Hà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 ParisHà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 AdultToá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))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 độ.
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 độ.
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 độ.
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:
- Chỉ chọn các cột "name", "age" và "salary"
- Lọc dữ liệu để chỉ giữ lại nhân viên từ 30 tuổi trở lên
- 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
- Sắp xếp khung dữ liệu theo mức lương giảm dần
- 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