6

我正在尝试读取包含用挪威语编写的问卷数据的 CSV 文件。所以这个文件包含字母 Æ Ø Å,但是 R 似乎不能很好地处理这些字母,它们都显示为问号。

我用它来读取数据:

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

我应该使用任何选项让 R 知道我有特殊字符吗?

我在 Windows 7 上使用 Rstudio。

4

3 回答 3

3

您需要将fileEncoding参数指定为read.csv2(不是以及 (?) encoding)。


在使用 R 之前,最好使用文本编辑器检查文件的编码是什么。例如,如果您在 Notepad++ 中打开文件,“编码”菜单可让您查看和更改字符编码。在 TextPad 中,您可以从 Save As.. 对话框更改编码。大多数文本编辑器都会有这样的功能。

这是您需要传递给的值fileEncoding;如果还没有,您不能只将文件声明为 UTF-16。这就是你收到警告的原因。

于 2013-06-24T10:53:05.173 回答
3

鉴于我的 R 版本和设置,这对我有用:
在记事本中,我检查 csv 文件是否使用“编码:ANSI”保存。
在 RStudio 中:工具/选项/默认文本编码:ISO8859-1

我尝试使用这样的虚拟数据:

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"

编辑来自@Ole Henrik Skogstrøm 8 月 7 日 7:57 的以下评论

来自@Ole Henrik Skogstrøm 的评论“如果我......在 Rstudio 中使用 view 命令,这个错误仍然存​​在”和“如果我只是输入它并将结果放在控制台中它可以工作”显示原始中给出的信息职位是不够的。

我上面的回答适用于实际提出的原始问题:将特殊字符读入 R。什么不起作用并且在 OP 中指定,是RStudio 中的对象View-ing”错误地显示æøå。从控制台运行View(dd)dd见上面的虚拟数据)和单击“工作区窗格”中的对象时,æøå 在数据查看器中显示为“黑色菱形问号”。

另一方面,如果您只使用 RGui,而不使用 RStudio,View(dd)则可以在数据查看器中正确显示字符。

因此,这似乎不是将æøå 读入 R 的问题,而是View在 RStudio 中对它们进行 -ing 的问题。另请参阅有关 RStudio 支持的这篇文章

于 2013-06-24T14:44:19.543 回答
1

Hei Henrik,当包含ØÆÅ的csv文件(由Excel生成)时,我遇到了同样的问题,在R中打开它们会将挪威字母显示为黑色菱形,中间有一个白色问号。对我来说,问题肯定是基于编码的,但是我无法成功使用“编码”或“文件编码”来正确打开它们。

我通过在记事本中打开 csv 然后将其转换为文本文件并将编码从“ANSI”更改为“UTF-8”来解决系统上的问题。请参阅示例。

以下链接包含两个由 excel 创建的 csv 文件,一个以 MS-DOS 编码(名称 CSV MSDOS)编码,另一个以“逗号分隔”(名称 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 设置了字符编码,而我遇到的问题,我相信你也有一个不同的系统软件一直在设置编码。

如果您有很多文件要处理,这个解决方案不是很有用,但这至少是一个开始。

于 2014-05-14T12:27:55.053 回答