tidyverseTrong phân tích dữ liệu, làm sạch dữ liệu (data cleaning) là một bước thiết yếu giúp đảm bảo tính chính xác của phân tích và mô hình hóa.
R cung cấp nhiều công cụ mạnh mẽ cho việc làm sạch, đặc biệt thông
qua các gói trong tidyverse như
dplyr, tidyr, lubridate,
janitor…
rename() trong dplyr:library(dplyr)
df <- data.frame(ma_kh = 1:3, doanhso = c(100, 200, 300))
df_renamed <- df %>%
rename(
MaKhachHang = ma_kh,
DoanhSo = doanhso
)
library(janitor)
df_clean <- df %>% clean_names()
df <- df %>%
mutate(
MaKhachHang = as.character(MaKhachHang),
DoanhSo = as.numeric(DoanhSo)
)
library(lubridate)
df <- data.frame(NgayGiaoDich = c("2024/01/02", "02-03-2024", "March 4, 2024"))
df <- df %>%
mutate(NgayGiaoDich = parse_date_time(NgayGiaoDich, orders = c("ymd", "dmy", "mdy")))
colSums(is.na(df))
df_no_na <- df %>% drop_na()
df_filled <- df %>%
mutate(
DoanhSo = ifelse(is.na(DoanhSo), 0, DoanhSo)
)
df_unique <- df %>% distinct()
df_unique_ma_kh <- df %>% distinct(MaKhachHang, .keep_all = TRUE)
library(tidyr)
df_wide <- data.frame(
MaKH = c("A", "B"),
Thang1 = c(100, 200),
Thang2 = c(150, 250)
)
df_long <- df_wide %>%
pivot_longer(cols = starts_with("Thang"),
names_to = "Thang",
values_to = "DoanhSo")
df_wide_again <- df_long %>%
pivot_wider(names_from = Thang, values_from = DoanhSo)
Giả sử có 2 bảng:
khachhang <- data.frame(ID = c(1,2,3), Ten = c("A", "B", "C"))
doanhso <- data.frame(ID = c(1,2), DoanhSo = c(100, 200))
left_join(khachhang, doanhso, by = "ID")
inner_join(khachhang, doanhso, by = "ID")
full_join(khachhang, doanhso, by = "ID")
df1 <- data.frame(ID = 1:2, DoanhSo = c(100, 200))
df2 <- data.frame(ID = 3:4, DoanhSo = c(300, 400))
df_all <- bind_rows(df1, df2)
📌 Hai bảng cần có cùng tên cột để nối.
Đổi tên cột rename(), clean_names()
Đổi kiểu dữ liệu as.character(), as.numeric()
Chuẩn hóa ngày giờ parse_date_time() – lubridate
Xử lý thiếu drop_na(), mutate(ifelse())
Loại trùng distinct()
Pivot/Unpivot pivot_longer(), pivot_wider()
Gộp bảng left_join(), inner_join()
Nối bảng dọc bind_rows()
Tidyverse Cheat Sheet
lubridate Guide
tidyr documentation
dplyr documentation