2013-06-24 53 views
5

我正在嘗試閱讀包含以挪威語編寫的調查問卷數據的CSV文件。所以這個文件包含字母Ø然而,R似乎不能很好地處理這些字母,它們都顯示爲問號。將特殊字符(如ÆØÅ)讀入R(Rstudio)

我使用它來讀取數據:

data <- read.csv2("Responser - Vasket - 20.06.2013.csv") 

有沒有我應該使用令R知道我有特殊字符的任何選項?

,我在Windows 7

+2

嘗試'編碼=「UTF-16」「 – user1609452

+0

或enocding =」ISO-8859-1「應該這樣做。根據[this](http://en.wikipedia.org/wiki/ISO/IEC_8859-1):請參閱完整覆蓋的語言。 – agstudy

+1

這些都解決了它。我仍然收到問號。還有什麼提示? –

回答

2

使用Rstudio你需要指定fileEncoding參數read.csv2以及(?)的encoding)。


在你到達R之前,最好檢查文件的編碼是使用文本編輯器。例如,如果您在Notepad ++中打開文件,則使用編碼菜單可以查看和更改字符編碼。在TextPad中,您可以從「另存爲...」對話框更改編碼。大多數文本編輯器都會有這樣的功能。

這是您需要傳遞給fileEncoding的值;如果文件不是已經存在的,你不能僅僅聲明一個文件爲UTF-16。這就是爲什麼你有警告。

+0

fileEncoding =「UTF-16」給我警告並取消導入。 ISO-8859-1對問題標記沒有任何規定: -/ –

+0

hi @OleHenrikSkogstrøm你怎麼能解決這個問題?我需要用挪威語和瑞典語字母輸入數據 – dsauce

1

鑑於我的R版本和設置,這適用於我:
在記事本中,我檢查csv文件是否與'Encoding:ANSI'一起保存。
在RStudio:工具/選項/默認文本編碼:ISO8859-1

我試着用這樣的僞數據:從@Ole亨裏克Skogstrøm

dd <- data.frame(area = c("øø", "åå", "ææ"), site = c("åå", "ææ", "øø")) 
write.csv2(x = dd, file = "åæø.csv", row.names = FALSE) 
dd2 <- read.csv2(file = "åæø.csv") 
all.equal(dd, dd2) 

sessionInfo() 
R version 3.0.1 (2013-05-16) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 

locale: 
[1] LC_COLLATE=Norwegian (Bokmål)_Norway.1252 LC_CTYPE=Norwegian (Bokmål)_Norway.1252 
[3] LC_MONETARY=Norwegian (Bokmål)_Norway.1252 LC_NUMERIC=C        
[5] LC_TIME=Norwegian (Bokmål)_Norway.1252 


getOption("encoding") 
[1] "native.enc" 

編輯如下評論08月07日7:57時

@Ole HenrikSkogstrøm透露說:「如果我在Rstudio中使用視圖命令,此錯誤仍然存​​在」和「如果我只是將它輸出並將結果放入控制檯,原始文章中提供的信息不足。

我的回答上述作品原來的問題確實問:讀取特殊字符爲R.是什麼不行,並且這是在OP不規定,是,View -ing」 RStudio中的對象不正確地顯示。從控制檯運行View(dd)dd,請參閱上面的虛擬數據),並且在「工作區窗格」中單擊對象時,在數據查看器中顯示爲「黑色菱形問號」。

另一方面,如果僅使用RGui而不使用RStudio,則View(dd)將在數據查看器中正確顯示字符。

因此,而不是從讀入R的問題,這似乎是一個問題與View-他們在RStudio。另見this post on RStudio support

+0

嗨,抱歉,花了這麼長時間才能找到你。我暫時忘了這個問題。這個答案寫得很好,但它對我來說不起作用。我得到和你一樣的語言環境輸出,但是我的數據集dd和dd2仍然顯示爲問號。 :-/ 有什麼建議麼? –

+0

嗯......和'getOption(「encoding」)'給出「native.enc」?試試看:'read.table(text ='「æ」,「ø」,「å」',sep =「,」,encoding =「native.enc」)? – Henrik

+0

奇怪的是,如果我創建一個數據框並在Rstudio中使用視圖命令,這個錯誤仍然存​​在。但是,如果我只是將它輸出並將結果放在控制檯中,它的工作原理......任何想法爲什麼? :) –

0

Hei Henrik,當包含ØÆÅ的csv文件(由Excel製作)在R中打開時,我會遇到同樣的問題,他們會將挪威文字母顯示爲中間帶有白色問號的黑色菱形。對我來說,這個問題肯定是基於編碼的,但是我無法成功地使用「encoding」或「fileEncoding」來正確打開它們。

我通過在記事本中打開csv然後將其轉換爲文本文件並將編碼從「ANSI」更改爲「UTF-8」來解決了我係統上的問題。看例子。

下面的鏈接包含由Excel中,一個在MSDOS編碼(名稱CSV MSDOS)其他在 「逗號分隔」 編碼(名稱CSV)式編碼創建了兩個的CSV文件

https://drive.google.com/folderview?id=0BzoGQiFdDwiNNm02UnNLVVNja3c&usp=sharing

在記事本中打開它們應顯示MS-DOS版本具有不正確的字母表示形式(因此可以忽略),而「逗號分隔」版本具有正確的表示形式。將「Names CSV」文件保存爲文本文件,編碼爲「UTF-8」,名稱爲「Names CSV UTF8」。將R中的工作目錄設置爲文件所在的文件夾並運行以下代碼。

test1 <- read.csv2("Names CSV.csv") 
test2 <- read.csv2("Names CSV UTF8.txt") 

test1應該顯示帶有問號test2的黑色鑽石,並應正確顯示名稱。

我認爲以前的答案可能沒有工作,因爲表是由R創建的R與R設置字符編碼,因爲我有問題,我相信你也是一個不同的系統軟件設置編碼。

如果你有很多文件需要處理,這個解決方案並不是非常有用,但它至少是一個開始。