Tôi đang xử lý một lượng lớn dữ liệu, chủ yếu là các tên có ký tự không phải tiếng Anh. Mục tiêu của tôi là để phù hợp với những tên này chống lại một số thông tin về họ thu thập được ở Mỹ.R: Thay thế các ký tự nước ngoài bằng một chuỗi
nghĩa là tôi có thể khớp tên 'Sølvsten' (từ một số danh sách tên) với 'Soelvsten' (tên được lưu trữ trong một số cơ sở dữ liệu của Mỹ). Đây là một chức năng tôi đã viết để làm điều này. Đó là rõ ràng clunky và hơi tùy ý, nhưng tôi tự hỏi, nếu có một chức năng R đơn giản mà dịch các ký tự nước ngoài để hàng xóm tiếng Anh gần nhất của họ. Tôi hiểu rằng có thể không có cách nào tiêu chuẩn để thực hiện chuyển đổi này, nhưng tôi chỉ tò mò nếu có và nếu chuyển đổi đó có thể được thực hiện thông qua chức năng R.
# a function to replace foreign characters
replaceforeignchars <- function(x)
{
require(gsubfn);
x <- gsub("š","s",x)
x <- gsub("œ","oe",x)
x <- gsub("ž","z",x)
x <- gsub("ß","ss",x)
x <- gsub("þ","y",x)
x <- gsub("à","a",x)
x <- gsub("á","a",x)
x <- gsub("â","a",x)
x <- gsub("ã","a",x)
x <- gsub("ä","a",x)
x <- gsub("å","a",x)
x <- gsub("æ","ae",x)
x <- gsub("ç","c",x)
x <- gsub("è","e",x)
x <- gsub("é","e",x)
x <- gsub("ê","e",x)
x <- gsub("ë","e",x)
x <- gsub("ì","i",x)
x <- gsub("í","i",x)
x <- gsub("î","i",x)
x <- gsub("ï","i",x)
x <- gsub("ð","d",x)
x <- gsub("ñ","n",x)
x <- gsub("ò","o",x)
x <- gsub("ó","o",x)
x <- gsub("ô","o",x)
x <- gsub("õ","o",x)
x <- gsub("ö","o",x)
x <- gsub("ø","oe",x)
x <- gsub("ù","u",x)
x <- gsub("ú","u",x)
x <- gsub("û","u",x)
x <- gsub("ü","u",x)
x <- gsub("ý","y",x)
x <- gsub("ÿ","y",x)
x <- gsub("ğ","g",x)
return(x)
}
Lưu ý: Tôi biết có tồn tại các thuật toán khớp tên như Jaro Winkler Distance Matching, nhưng tôi muốn thực hiện các kết hợp chính xác.
Cảm ơn, Gabor (tôi giả sử bạn cũng giống như http://r.789695.n4.nabble.com/template/NamlServlet.jtp?macro=user_nodes&user=39147). Tôi đã thử nghiệm cả ba giải pháp được đăng cho đến nay và điều này có vẻ nhanh nhất (mặc dù, tôi chỉ quan sát thời gian thực hiện và không thực sự ** thời gian **, _and_ trên máy tính xách tay không được cắm vào để biết điều gì đang thúc đẩy hiệu quả :-)) – krishnan
không nên là 's1 <- chatr (old1, new1, s)'? – Lucarno
Cảm ơn. Vâng. Đã sửa lỗi. –