Giao diện
Module 4: Strings & Dates 📅
📝 Stats
- Số lượng: 10 câu hỏi
- Độ khó: Trung bình
- Mục tiêu: Clean data rác và parse ngày tháng chuẩn xác.
MCQ
Q1. Hàm ymd() của lubridate dùng để parse chuỗi nào sau đây?
- [ ] "2024-01-30"
- [ ] "30-01-2024"
- [ ] "01-30-2024"
- [ ] "2024/30/01"
Đáp án: "2024-01-30" (Year-Month-Day).
Q2. Regex pattern ^A.+z$ khớp với chuỗi nào?
- [ ] "Applez"
- [ ] "Amaz"
- [ ] "A to z"
- [ ] Tất cả các phương án trên.
Đáp án: Tất cả. (
^bắt đầu bằng A,.+bất kỳ ký tự nào ở giữa,$kết thúc bằng z).
Q3. Hàm nào trả về độ dài của chuỗi (số ký tự)?
- [ ]
length() - [ ]
str_length()(stringr) hoặcnchar()(base) - [ ]
dim() - [ ]
count()
Đáp án:
str_length()hoặcnchar(). (length()trả về độ dài vector, không phải độ dài chuỗi trong vector).
Coding Challenge
Challenge: Log Parsing
Bạn có một vector log file: logs <- c("[ERROR] 2024-01-01: System crashed", "[INFO] 2024-01-01: Booted", "[WARN] 2024-01-02: Low memory")
Nhiệm vụ:
- Tạo data frame.
- Trích xuất cột
level(ERROR, INFO, WARN). (Gợi ý: Dùngstr_extractvới regex). - Trích xuất cột
datevà convert sang Date object.
r
library(stringr)
library(lubridate)
library(tibble)
logs <- c("[ERROR] 2024-01-01: System crashed", "[INFO] 2024-01-01: Booted", "[WARN] 2024-01-02: Low memory")
df <- tibble(raw = logs) |>
mutate(
# Lấy chữ cái in hoa bên trong ngoặc vuông
level = str_extract(raw, "(?<=\\[)[A-Z]+(?=\\])"),
# Lấy chuỗi ngày tháng (yyyy-mm-dd)
date_str = str_extract(raw, "\\d{4}-\\d{2}-\\d{2}"),
date = ymd(date_str)
)
print(df)