首页 > 解决方案 > 在读取 sas 文件以触发或将数据拉到 r 会话时,有没有办法设置字符编码?

问题描述

所以,我有很大的 sas7bdat 文件,我想阅读它们以激发、处理它们,然后将结果收集到 ar 会话。我正在阅读它们以使用 packagespark.sas7bdat和 function激发火花spark_read_sas。到目前为止,一切都很好。问题是 sas7bdat 文件的字符编码是 iso-8859-1,但要在 R 中正确显示内容,它需要是 UTF-8。当我将结果拉到 R 时,我的数据看起来像这样。(让我们首先创建一个与我的结果具有相同原始字节的示例)

mydf <- data.frame(myvar = rawToChar(as.raw(c(0xef, 0xbf, 0xbd, 0x62, 0x63))))

head(mydf$myvar,1) # should get äbc if it was originally read correctly
> �bc

之后更改编码由于某种原因不起作用。

iconv(head(mydf$myvar,1), from = 'iso-8859-1', to = 'UTF-8')
> �bc

如果我使用haven包并将read_sas('myfile.sas7bdat', encoding = 'iso-8859-1')文件直接读取到我的 r-session 中,一切都会按预期工作。

head(mydf$myvar,1)
> äbc

我将非常感谢一个解决方案,它使我能够在 spark 中进行处理,然后只将结果收集到 R-session,因为文件太大了。我想这可能会在以下情况下解决它可能与 sas7bdat 文件中的特殊字符编码有关)。

标签: rapache-sparkcharacter-encoding

解决方案


推荐阅读