Skip to content

Buổi 3: Quản Lý và Tiền Xử Lý Dữ Liệu trong R với Tidyverse

Mục Tiêu:

  • Làm quen với các gói trong Tidyverse (như dplyr, tidyr, readr).
  • Học cách đọc dữ liệu từ các file CSV, Excel và từ cơ sở dữ liệu.
  • Tiền xử lý dữ liệu cơ bản: lọc, sắp xếp, làm sạch và biến đổi dữ liệu.

1. Giới Thiệu về Tidyverse

Tidyverse là một bộ các gói R được thiết kế để làm việc với dữ liệu theo cách “gọn gàng” và dễ hiểu. Các gói trong Tidyverse giúp bạn thao tác với dữ liệu một cách dễ dàng và hiệu quả hơn. Ba gói chính bạn cần biết trong Tidyverse là:

  • dplyr: Dùng để thao tác với dữ liệu như lọc, sắp xếp, nhóm và tính toán.
  • tidyr: Dùng để làm sạch và biến đổi dữ liệu, giúp chuyển đổi dữ liệu từ dạng “dài” sang “rộng” và ngược lại.
  • readr: Dùng để đọc và ghi dữ liệu vào các định dạng phổ biến như CSV, Excel, và các định dạng văn bản.

Để sử dụng các gói này, bạn cần cài đặt và tải Tidyverse vào R.

Cài Đặt và Tải Tidyverse

Đầu tiên, bạn cần cài đặt Tidyverse và tải nó vào môi trường làm việc:

install.packages("tidyverse")  # Cài đặt Tidyverse
library(tidyverse)  # Tải Tidyverse vào

Sau khi tải thành công, bạn có thể sử dụng các gói trong Tidyverse như dplyr, tidyr, và readr.


2. Đọc Dữ Liệu vào R với readr

Trước khi làm việc với dữ liệu, bạn cần đọc dữ liệu từ các nguồn khác nhau như file CSV, Excel, hoặc cơ sở dữ liệu. Gói readr giúp bạn làm điều này một cách dễ dàng.

Đọc File CSV

Giả sử bạn có một file dữ liệu dưới định dạng CSV. Để đọc file này vào R, bạn sử dụng hàm read_csv() trong readr.

Ví dụ:

# Đọc file CSV vào R
data <- read_csv("duong_dan_file.csv")
# Kiểm tra dữ liệu đã được đọc
head(data)

Hàm read_csv() sẽ tự động nhận diện các kiểu dữ liệu và phân tách các cột một cách chính xác.

Đọc File Excel

Để đọc file Excel, bạn có thể sử dụng gói readxl. Cài đặt và sử dụng như sau:

install.packages("readxl")
library(readxl)

# Đọc file Excel
data_excel <- read_excel("duong_dan_file.xlsx")
head(data_excel)

3. Tiền Xử Lý Dữ Liệu với dplyr

Gói dplyr là công cụ chính để bạn thao tác với dữ liệu trong R. Với dplyr, bạn có thể thực hiện các thao tác như lọc dữ liệu, sắp xếp, nhóm và tính toán.

Lọc Dữ Liệu (filter)

Lọc dữ liệu giúp bạn chọn ra các dòng dữ liệu thỏa mãn điều kiện cụ thể.

Ví dụ, để lọc các hàng có giá trị trong cột age lớn hơn 30:

data_filtered <- filter(data, age > 30)
head(data_filtered)

Sắp Xếp Dữ Liệu (arrange)

Sắp xếp dữ liệu theo một hoặc nhiều cột.

Ví dụ, để sắp xếp dữ liệu theo cột age từ nhỏ đến lớn:

data_sorted <- arrange(data, age)
head(data_sorted)

Nếu muốn sắp xếp giảm dần, thêm dấu desc():

data_sorted_desc <- arrange(data, desc(age))
head(data_sorted_desc)

Chọn Cột Dữ Liệu (select)

Chọn một số cột cụ thể trong bảng dữ liệu.

Ví dụ, để chỉ lấy các cột nameage:

data_selected <- select(data, name, age)
head(data_selected)

Thêm Cột Mới (mutate)

Thêm các cột tính toán hoặc biến đổi vào bộ dữ liệu.

Ví dụ, để tạo cột mới age_in_months tính tuổi theo tháng:

data_with_months <- mutate(data, age_in_months = age * 12)
head(data_with_months)

Nhóm Dữ Liệu và Tính Toán (group_bysummarise)

Bạn có thể nhóm dữ liệu theo một hoặc nhiều cột và sau đó thực hiện các phép toán thống kê.

Ví dụ, để tính trung bình tuổi theo từng nhóm gender:

data_grouped <- group_by(data, gender)
data_summary <- summarise(data_grouped, avg_age = mean(age, na.rm = TRUE))
head(data_summary)

4. Biến Đổi Dữ Liệu với tidyr

tidyr giúp bạn làm sạch và biến đổi dữ liệu để dữ liệu dễ phân tích hơn.

Chuyển Dữ Liệu từ Dạng Dài sang Dạng Rộng (spread)

Giả sử bạn có dữ liệu ở dạng dài (long format) và muốn chuyển nó thành dạng rộng (wide format).

Ví dụ, nếu bạn có dữ liệu với cột yearvalue và muốn tạo cột cho từng năm, bạn có thể sử dụng hàm spread():

data_wide <- spread(data, key = year, value = value)
head(data_wide)

Chuyển Dữ Liệu từ Dạng Rộng sang Dạng Dài (gather)

Ngược lại, nếu bạn muốn chuyển dữ liệu từ dạng rộng sang dạng dài, sử dụng hàm gather().

Ví dụ:

data_long <- gather(data_wide, key = "year", value = "value", -id)
head(data_long)

Xử Lý Dữ Liệu Mất (NA)

Để xử lý các giá trị bị thiếu (NA), bạn có thể sử dụng hàm fill() trong tidyr.

Ví dụ, để điền giá trị thiếu trong cột age:

data_filled <- fill(data, age)
head(data_filled)

5. Lưu Dữ Liệu Ra File với write_csv

Sau khi xử lý xong dữ liệu, bạn có thể lưu lại dữ liệu đã xử lý vào file CSV để sử dụng trong các bước sau.

Ví dụ:

write_csv(data, "duong_dan_luu_file.csv")

6. Thực Hành

Bài Tập 1: Đọc dữ liệu từ một file CSV vào R và hiển thị 6 dòng đầu tiên.

Bài Tập 2: Sử dụng filter để lọc ra các dòng có giá trị trong cột age lớn hơn 30, sau đó sắp xếp theo cột age.

Bài Tập 3: Thêm một cột mới age_in_months tính tuổi theo tháng (tuổi x 12) vào dữ liệu.

Bài Tập 4: Nhóm dữ liệu theo gender và tính giá trị trung bình của cột age.


Tổng Kết Buổi 3:

Trong buổi học này, các em đã học cách sử dụng các gói trong Tidyverse để quản lý và tiền xử lý dữ liệu. Các em đã làm quen với các hàm trong dplyr để lọc, sắp xếp, và tính toán trên dữ liệu.

Các em cũng đã học cách sử dụng tidyr để biến đổi dữ liệu từ dạng dài sang dạng rộng và ngược lại, cùng với các kỹ thuật xử lý dữ liệu mất. Cuối cùng học cách lưu dữ liệu ra file và thực hành những thao tác cơ bản này.

Trong buổi tiếp theo, chúng ta sẽ tìm hiểu về cách trực quan hóa dữ liệu với ggplot2 để tạo ra các biểu đồ sinh động và dễ hiểu.

1 thought on “Buổi 3: Quản Lý và Tiền Xử Lý Dữ Liệu trong R với Tidyverse”

Leave a Reply

Your email address will not be published. Required fields are marked *