Bài học theo mô-đun (1/2)
Lọc và chọn dữ liệu
Tidyverse là tập hợp các gói R được thiết kế cho khoa học dữ liệu có chung triết lý, ngữ pháp và cấu trúc dữ liệu. Gói cốt lõi để thao tác dữ liệu trong bộ phần mềm này được gọi là dplyr.
dplyr giới thiệu một tập hợp các hàm ("động từ") giúp thao tác với khung dữ liệu trở nên trực quan hơn.
Toán tử đường ống (%>% hoặc |>)
Triết lý Tidyverse tập trung vào việc xâu chuỗi các hoạt động lại với nhau. Toán tử đường ống %>% (hoặc đường ống gốc |> được giới thiệu trong R 4.1+) lấy kết quả của một biểu thức và chuyển nó làm đối số đầu tiên cho hàm tiếp theo. Điều này tránh các lệnh gọi hàm lồng nhau và tránh làm lộn xộn không gian làm việc của bạn với các biến tạm thời.
# Without pipe:
filter(select(df, name, age), age > 20)
# With pipe:
df %>%
select(name, age) %>%
filter(age > 20)Động từ dplyr để lọc và chọn
Ba động từ cơ bản để trích xuất dữ liệu từ khung dữ liệu là:
1. select()
Chọn các cột cụ thể từ khung dữ liệu. Bạn có thể liệt kê tên cột để giữ lại hoặc sử dụng tiền tố - để loại trừ cột.
# Select the 'name' and 'salary' columns
select(df, name, salary)
# Remove the 'address' column
select(df, -address)2. filter()
Lọc các hàng dựa trên một hoặc nhiều điều kiện logic.
# Filter rows where age is greater than 30
filter(df, age > 30)
# Filter using multiple conditions (logical AND)
filter(df, age > 30, department == "HR")3. arrange()
Sắp xếp các hàng dựa trên giá trị của một hoặc nhiều cột. Thứ tự sắp xếp tăng dần theo mặc định. Để sắp xếp theo thứ tự giảm dần, hãy bọc tên cột trong desc().
# Sort by age (ascending)
arrange(df, age)
# Sort by salary (descending)
arrange(df, desc(salary))Hãy tự mình thử
Bài tập 1: Chọn cột
Cho khung dữ liệu df, chọn cột tên và tuổi bằng cách sử dụng select() và lưu kết quả vào df_selected.
Hiển thị gợi ý
Hoa Kỳ: df_selected <- select(df, name, age)
Giải pháp khả dụng sau 3 lần thử
Lọc các hàng của khung dữ liệu df trong đó cột tuổi hoàn toàn lớn hơn 18, lưu kết quả vào df_adults.
Hiển thị gợi ý
Sử dụng hàm filter(df, age > 18) và gán kết quả cho df_adults.
Giải pháp khả dụng sau 3 lần thử
Sử dụng toán tử ống %>% cho các thao tác chuỗi: đầu tiên lọc df chỉ giữ các bản ghi có độ tuổi > 18, sau đó chọn cột tên. Lưu kết quả ở dạng res.
Hiển thị gợi ý
Scrivi: res <- df %>% filter(age > 18) %>% select(name)
Giải pháp khả dụng sau 3 lần thử
Sắp xếp các hàng của khung dữ liệu df dựa trên cột lương theo thứ tự giảm dần bằng cách sử dụng sắp xếp() và desc(). Lưu kết quả vào df_sorted.
Hiển thị gợi ý
Hoa Kỳ sắp xếp(desc(salary)) all'interno di una pipe hoặc đến argomento direct.
Giải pháp khả dụng sau 3 lần thử
Viết một quy trình hoàn chỉnh trên df: lọc các bản ghi trong đó bộ phận bằng 'IT', chọn tên cột và mức lương, đồng thời sắp xếp kết quả theo mức lương (tăng dần). Lưu kết quả cuối cùng ở dạng res.
Hiển thị gợi ý
Sử dụng ống %>% để lọc chuỗi (bộ phận == 'IT'), chọn (tên, mức lương) và sắp xếp (mức lương).
Giải pháp khả dụng sau 3 lần thử