Thao tác với chuỗi
Bài học 12 trên 14 trong khóa học Thao tác dữ liệu trong R của Coddy.
Gói stringr cung cấp một tập hợp đầy đủ các hàm để làm việc với chuỗi.
Tải gói stringr
library(stringr)So khớp mẫu
Hàm str_detect() kiểm tra xem một mẫu có tồn tại trong chuỗi hay không:
text <- c("apple", "banana", "cherry")
str_detect(text, "an") # Trả về: FALSE TRUE FALSEThay thế chuỗi
Hàm str_replace() thay thế lần xuất hiện đầu tiên của một mẫu:
text <- "Hello world"
str_replace(text, "world", "R") # Trả về: "Hello R"Tách chuỗi
Tách chuỗi thành một vector ký tự bằng str_split():
text <- "apple,banana,cherry"
str_split(text, ",") # Trả về một danh sách (list): list("apple", "banana", "cherry")Xóa khoảng trắng
Xóa khoảng trắng ở đầu và cuối bằng str_trim():
text <- " Hello, R! "
str_trim(text) # Trả về: "Hello, R!"Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Thử thách
DễTạo một hàm xử lý danh sách địa chỉ email bằng các kỹ thuật thao tác chuỗi từ package stringr. Hàm cần thực hiện các thao tác sau:
- Trích xuất tên người dùng (phần trước @) từ mỗi địa chỉ email
- Thay mọi chữ số trong tên người dùng bằng dấu gạch dưới (_)
- Dùng
str_replace_all()với mẫu\\dđể thay thế tất cả chữ số. Ví dụ:str_replace_all(username, "\\d", "_")
- Dùng
- Viết hoa chữ cái đầu tiên của mỗi tên người dùng
- Bạn có thể dùng hàm
str_to_title(). Hàm này viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi.
- Bạn có thể dùng hàm
- Xóa khoảng trắng ở đầu hoặc cuối tên người dùng đã xử lý
- Trả về tên người dùng đã xử lý dưới dạng chuỗi phân tách bằng dấu phẩy
- Dùng
str_c()với đối số collapse để nối các tên người dùng. Ví dụ:str_c(usernames, collapse = ", ")
- Dùng
Tự làm thử
# Đọc đầu vào
con <- file("stdin", "r")
email_list <- suppressWarnings(readLines(con))
suppressPackageStartupMessages(library(stringr))
process_emails <- function(email_list) {
# Tách danh sách email thành từng địa chỉ email
emails <- str_split(email_list, ",\\s*")[[1]]
# TODO: Viết code bên dưới để xử lý các địa chỉ email
# 1. Trích xuất tên người dùng
# 2. Thay các chữ số bằng dấu gạch dưới
# 3. Viết hoa chữ cái đầu tiên
# 4. Xóa khoảng trắng ở đầu và cuối
# 5. Nối các tên người dùng đã xử lý bằng dấu phẩy
# Chỗ dành sẵn cho các tên người dùng đã xử lý
processed_usernames <- ""
# Trả về các tên người dùng đã xử lý dưới dạng chuỗi, ngăn cách bằng dấu phẩy
return(processed_usernames)
}
# Gọi hàm và in ra kết quả
result <- process_emails(email_list)
cat(result)Tất cả bài học trong Thao tác dữ liệu trong R
Tự luyện tập: Trình biên dịch R online