Tôi cần thay chuỗi A bằng chuỗi B, chỉ khi chuỗi A là toàn bộ từ (ví dụ: "MECH") và tôi không muốn thay thế khi A là một phần của chuỗi dài hơn (ví dụ: "MECHANICAL"). Cho đến nay, tôi có một grepl() mà kiểm tra xem chuỗi A là một chuỗi toàn bộ, nhưng tôi không thể tìm ra cách để thay thế. Tôi đã thêm một ifelse() với ý tưởng để làm cho gsub() thay thế khi grep() trả về TRUE, nếu không sẽ không thay thế. Bất kỳ đề xuất? Vui lòng xem mã bên dưới. Cảm ơn.Cụm từ thông dụng để tìm và thay thế có điều kiện
aa <- data.frame(type = c("CONSTR", "MECH CONSTRUCTION", "MECHANICAL CONSTRUCTION MECH", "MECH CONSTR", "MECHCONSTRUCTION"))
from <- c("MECH", "MECHANICAL", "CONSTR", "CONSTRUCTION")
to <- c("MECHANICAL", "MECHANICAL", "CONSTRUCTION", "CONSTRUCTION")
gsub2 <- function(pattern, replacement, x, ...) {
for(i in 1:length(pattern)){
reg <- paste0("(^", pattern[i], "$)|(^", pattern[i], ")|(", pattern[i], "$)|(", pattern[i], ")")
ifelse(grepl(reg, aa$type),
x <- gsub(pattern[i], replacement[i], x, ...),
aa$type)
}
x
}
aa$title3 <- gsub2(from, to, aa$type)
Tôi nhận thấy trong phần tử 5 nó không thay thế MECH. Nó có phải không? –