Menu
CoddyTech

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 FALSE

Thay 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!"
quiz iconTự kiểm tra

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 độ.

quiz iconTự kiểm tra

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 độ.

quiz iconTự kiểm tra

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 độ.

challenge icon

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:

  1. Trích xuất tên người dùng (phần trước @) từ mỗi địa chỉ email
  2. 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", "_")
  3. 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.
  4. Xóa khoảng trắng ở đầu hoặc cuối tên người dùng đã xử lý
  5. 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 = ", ")

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