有沒有辦法將R中的特殊字母轉換爲英文字母?例如:在R中將特殊字母轉換爲英文字母
Æ -> AE
Ø -> O
Å -> A
編輯:我需要這種轉換的原因爲R無法看到這兩個詞是相同的:
stringdist('oversættelse','oversaettelse')
[1] 2
grepl('oversættelse','oversaettelse')
FALSE
有人10噸只使用英文字符和其他一些人不寫。爲了比較一些文本,我需要以「相同的格式」來使用它們。
有沒有辦法將R中的特殊字母轉換爲英文字母?例如:在R中將特殊字母轉換爲英文字母
Æ -> AE
Ø -> O
Å -> A
編輯:我需要這種轉換的原因爲R無法看到這兩個詞是相同的:
stringdist('oversættelse','oversaettelse')
[1] 2
grepl('oversættelse','oversaettelse')
FALSE
有人10噸只使用英文字符和其他一些人不寫。爲了比較一些文本,我需要以「相同的格式」來使用它們。
您可以使用CHARTR
x <- "ØxxÅxx"
chartr("ØÅ", "OA", x)
[1] "OxxAxx"
和/或GSUB
y <- "Æabc"
gsub("Æ", "AE", y)
[1] "AEabc"
一個簡單的字符串替換不會覆蓋所有*非ASCII字符需要轉換爲其他內容的情況 - * if *有一個實際的需要轉換 –
@PanagiotisKanavos你是對的,我編輯了我的答案。 –
我用chartr。它似乎正常化我想要的方式。 –
我最近有一個非常類似的問題,並指出了問題Unicode normalization (form C) in R : convert all characters with accents into their one-unicode-character form?
基本要點是許多這些特殊字符中存在多個unicode表示 - 這將與文本比較混淆。建議的解決方案是使用stringi程序包函數stri_trans_nfc
- 它還具有支持音譯的功能stri_trans_general
,這可能正是您所需要的。
具體來說,就像'stri_trans_general(「ØxxÅxxÆabc」,「latin-ascii」)'。 +1 – A5C1D2H2I1M1N2O1R2T1
我想知道[icuSetCollate](https://stat.ethz.ch/R-manual/R-devel/library/base/html/icuSetCollate.html)是否允許'grepl'匹配字符串而不改變它們?幫助頁甚至包括丹麥的例子 –
@PanagiotisKanavos很好找!這甚至可以幫助我解決我最初的問題。 – bdecaf
這些不是特殊字母,這些都是適當的拉丁字符可用。你甚至不需要Unicode來處理它們,它們是拉丁代碼頁的一部分(例如Windows 1252)。你爲什麼想把它們映射到不同的角色? –
這聽起來像是一個[XY問題]的案例(http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) - X存在問題,但詢問假設的解決方案Y *爲什麼*你想要替換這些人物? *遇到的*實際*問題是什麼?你有沒有使用R函數來破壞文本?源數據是Unicode還是使用特定的代碼頁? –
將Å轉換爲AA是一種典型慣例,甚至字母Å原來取代的字符組合更合適。 –