2015-05-14 3 views
2

Я пытаюсь изменить кодировку столбца в dataframe.R- Изменение кодировки столбца в dataframe?

stri_enc_mark(data_updated$text) 
# [1] "UTF-8" "ASCII" "ASCII" "UTF-8" "ASCII" "ASCII" "UTF-8" "UTF-8" "UTF-8" 
# [10] "ASCII" "ASCII" "UTF-8" "ASCII" "UTF-8" "ASCII" "UTF-8" "ASCII" "UTF-8" 
# [19] "ASCII" "UTF-8" "ASCII" "UTF-8" "ASCII" "UTF-8" "UTF-8" "ASCII" "ASCII" 
# [28] "ASCII" "ASCII" "UTF-8" "ASCII" "ASCII" "ASCII" "UTF-8" "UTF-8" "ASCII" 

Когда я пытаюсь преобразовать его, он не выдаст ошибку, но до сих пор не имеет никакого влияния на вектор:

d <- enc2utf8(data_updated$text) 
stri_enc_mark(d) 
# [1] "UTF-8" "ASCII" "ASCII" "UTF-8" "ASCII" "ASCII" "UTF-8" "UTF-8" "UTF-8" 
# [10] "ASCII" "ASCII" "UTF-8" "ASCII" "UTF-8" "ASCII" "UTF-8" "ASCII" "UTF-8" 
# [19] "ASCII" "UTF-8" "ASCII" "UTF-8" "ASCII" "UTF-8" "UTF-8" "ASCII" "ASCII" 
# [28] "ASCII" "ASCII" "UTF-8" "ASCII" "ASCII" "ASCII" "UTF-8" "UTF-8" "ASCII" 

Любые предложения?

Я нахожусь на Windows 7, 32bit. Добавление фрагмента данных.

> Encoding(data_updated$text[1:35]) 
[1] "UTF-8" "unknown" "unknown" "UTF-8" "unknown" "unknown" "UTF-8" 
[8] "UTF-8" "UTF-8" "unknown" "unknown" "UTF-8" "unknown" "UTF-8" 
[15] "unknown" "UTF-8" "unknown" "UTF-8" "unknown" "UTF-8" "unknown" 
[22] "UTF-8" "unknown" "UTF-8" "UTF-8" "unknown" "unknown" "unknown" 
[29] "unknown" "UTF-8" "unknown" "unknown" "unknown" "UTF-8" "UTF-8" 

Данные выглядят следующим образом.

> data_updated$text[1:35] 
[1] "RT @satpalpandey: Majlis started in Sirsa Ashram.\nInform others too.\nLive @ http://t.co/zGXWATGajX\nIVR Airtel 55252\nReliance 56300403\n\n#MSG…" 
[2] "Deal Talks for Here Mapping Service Expose Reliance on Location Data, via @nytimes #mapping #dilemma http://t.co/wGdiS5OlRq"      
[3] "http://t.co/UZIyX1Rk7W The popping linksexploaded!! http://t.co/KpNntm1dH7 :) http://t.co/oku91uVxZ8"            
[4] "RT @davidsunaria90: Wtch LIVE Mjlis Now\n http://t.co/GXNhe3eY7Y\nIVR Airtel: 55252\nReliance: 56300403\nYoutube Link : http://t.co/YewOVcz8bb\n…" 
[5] "Reliance Jio Infocomm: Indian carrier raises $750 million loan for 4G rollout http://t.co/B2aWlkmwXz"            
[6] "RT @SurjeetInsan: Majlis started in Sirsa Ashram.\nLive @ http://t.co/PR6W5tzZes\nIVR Airtel 55252\nReliance 56300403\n\n#MSGPlsSaveTheEarth"  
[7] "\"Deal Talks for Here Mapping Service Expose Reliance on Location Data\" by MARK SCOTT and MIKE ISAAC via NYT Techno… http://t.co/kyxTYIxks5"  
[8] "RT @satpalpandey: Majlis started in Sirsa Ashram.\nInform others too.\nLive @ http://t.co/zGXWATGajX\nIVR Airtel 55252\nReliance 56300403\n\n#MSG…" 
[9] "RT @jaameinsan: Watch LIVE Majlis Now\n http://t.co/nPQegnLXPa\nIVR Airtel: 55252\nReliance: 56300403\nYoutube Link : http://t.co/txXMtw3zFP\n#M…" 
[10] "\"Deal Talks for Here Mapping Service Expose Reliance on Location Data\" by MARK SCOTT and MIKE ISAAC via NYT Technology" 

Это чириканье, и я думаю, что «HTTP: //» ссылки диктуют кодирование здесь, учитывая, что у них есть такие выражения, как «wGdiS5OlRq». Для анализа я удалил эти теги с помощью регулярных выражений. Но для хранения необработанных данных в БД мне нужны эти твиты. У MongoDB нет проблем, но RDBMS вызывает проблемы.

+0

Это помогло бы иметь [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Было бы также полезно узнать, на какой ОС вы находитесь и что «Кодирование()» возвращает для этих векторов. Возможно, что если в строке нет никаких символов, отличных от ascii, он просто вернет ASCII. – MrFlick

+0

Это довольно классический пример, когда проблема может быть упрощена. У вас есть 36 точек данных. Вам нужно 2, чтобы продемонстрировать эту проблему - 'data_updated $ text [1: 2]' будет достаточно, чтобы ничего не менять с ASCII до UTF-8 – thelatemail

+0

спасибо за указание. Обновили сообщение – NEO

ответ

1

Похоже, что мы можем использовать функцию conv() для преобразования кодировки после преобразования вектора в коэффициент, а затем обратно в вектор символа. Это немного странно, если честно.

0

В случае, если кто-то все еще застрял: я использовал Encoding().

for (col in colnames(mydataframe)){ 
    Encoding(mydataframe[[col]]) <- "UTF-8"} 
Смежные вопросы