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 name
và age
:
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_by
và summarise
)
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 year
và value
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.
cập nhật thêm ví dụ hoặc github code