2017-09-10 76 views
2

我有一個.csv數據框df具有100,000+行和兩列代表城市和國家的名稱(從網站的許可刮),其中一部分數據如下所示:R中的外部字符自動編碼修復

df <- read.csv("country_dat.csv", header = TRUE, sep = ",", stringsAsFactors = FALSE) 
df 
    city      country 
1 Huntsville, Alabama  US 
2 Nyn_shamn    Sweden 
3 J__li     Finland 

該文件包括多個編碼,所以我嘗試了以下解決在後處理的編碼錯誤:

guess_encoding(df$city[2]) 

    encoding language confidence 
1 ISO-8859-1  en  0.30 
2 ISO-8859-2  hu  0.20 
3  UTF-8    0.15 
4 UTF-16BE    0.10 
5 UTF-16LE    0.10 
6 Shift_JIS  ja  0.10 
7  GB18030  zh  0.10 
8  EUC-JP  ja  0.10 
9  EUC-KR  ko  0.10 
10  Big5  zh  0.10 

repair_encoding(df$city[2]) 

Best guess: ISO-8859-1 (56% confident) 
[1] "Nyn_shamn" 

這顯然是行不通的。是否有可能自動修復編碼過程,而不必再次刮掉網站?

編輯:所需的輸出看起來象下面這樣:

city      country   city_fixed 
1 Huntsville, Alabama  US    Huntsville, Alabama 
2 Nyn_shamn    Sweden   Nynäshamn 
3 J__li     Finland   Jääli 

回答

0

你能提供您所需的輸出? 「's-Hertogenbusch'是一個有效的荷蘭城市名稱,所以我不明白爲什麼這是」顯然不工作「。

另一種選擇可能是使用en2cutf8()這應該協調您的輸入 - 但是,我不是

+0

試過'enc2utf8()'但是沒有工作,這個和guess_encoding'輸出的結果都是下劃線而不是特殊字符 – 1984

+0

你能否提供一個小樣本.csv文件,以便可以播放一下?否則,測試可能的解決方案相當困難 – TomS