R101 - Bài 2: Dọn Rác Dữ Liệu (Data Cleaning) - Ác Mộng Của Mọi Researcher
80% thời gian làm Data là để... dọn rác. Thiếu dữ liệu (NA), sai định dạng, dư khoảng trắng. Đừng lo, gói `tidyverse` sẽ là cái chổi thần kỳ của bạn.

Sếp gửi cho bạn file `customer_data.csv`. Bạn hý hửng mở ra và... ối giời ơi:
- Cột tuổi thì có ông điền "chín mươi", ông điền "90".
- Cột thu nhập thì ông điền số, ông điền "5 củ".
- Cột giới tính thì "Nam", "Male", "M", "Boy" loạn xì ngầu.
Nếu đưa đống rác này vào chạy SPSS hay Excel thì nó báo lỗi ngay. R có một cái máy hút bụi cực mạnh tên là `dplyr`.

Quy trình dọn rác: Input Rác -> Qua phễu lọc -> Output Sạch bong kin kít.
1. Load dữ liệu & Thư viện
`library(tidyverse)` (Gọi chổi thần)
`df <- read_csv("marketing_sample.csv")` (Đọc file)
Lệnh `read_csv` hay hơn `read.csv` của R gốc nhiều. Nó thông minh hơn, tự đoán định dạng (số hay chữ) chuẩn hơn.
2. Các tuyệt chiêu dọn nhà
- Lọc khách hàng (Filter): Chỉ lấy khách VIP?
`df_vip <- filter(df, Customer_Type == "VIP")`
- Chọn cột (Select): Bảng 100 cột, chỉ lấy cột Tên và Tuổi?
`df_small <- select(df, Name, Age)`
- Tạo biến mới (Mutate): Muốn tính Lương Năm = Lương Tháng 12?
`df <- mutate(df, Annual_Income = Monthly_Income 12)`
- Sắp xếp (Arrange): Ai giàu nhất đứng đầu?
`df <- arrange(df, desc(Income))`
Thấy chưa? Viết code mà như viết văn tả cảnh vậy. `filter` là lọc, `arrange` là sắp xếp. Dễ hiểu đến phát khóc.
Ví dụ thực tế (Simulation)
Giả sử ta có bảng dữ liệu gốc:
Chạy lệnh dọn rác:
`df_clean <- df %>% drop_na()`
Kết quả (Bùm!):

