簡體   English   中英

R中的非ASCII字符,從.sav文件讀取

[英]Non-ASCII characters in R, reading from .sav file

我正在嘗試將.sav文件讀入RStudio。 該文件包含來自西班牙語調查的數據,當我將其讀入R時 - 即使我的默認文本編碼已設置為ISO-8859-1 - 特殊字符的顯示也不正確。

例如,單詞“Camión”顯示為

"Cami<c3><b3>n" 

即使它在PSPP中正確顯示為“Camión”。

這就是我做的:

install.packages("memisc")
jcv2014 <- as.data.set(spss.system.file('myfile.sav'))

后來,我想創建一個只有變量標簽的列表,所以我做了以下事情:

library(foreign)
jcv2014.spss <- read.spss("myfile.sav", to.data.frame=FALSE, use.value.labels=FALSE)
jcv2014_vars <- attr(jcv2014.spss, "variable.labels")

(我不確定這是否是最好的方法,但它有效)

無論如何,這一次,我仍然沒有得到正確的口音,但有一種不同的編碼:

一個應該是“¿Quécalificaciónlearía......”的變量標簽反而出現了

"\302\277Qu\303\251 calificaci\303\263n le dar\303\255a..."

我不確定如何獲得正確的字符,但它們在PSPP中正確顯示。 我嘗試將R中的默認文本編碼更改為ISO-8859-1和UTF-8,但無濟於事。 我不知道原始文件是什么編碼的,但我猜它會是其中之一。

有任何想法嗎?

如果它有幫助,我有R版本3.1.1和OS X Yosemite版本10.10.1,我使用PSPP,而不是SPSS。

非常感謝提前!!!

您可以在讀取數據后設置編碼嗎?

# Here's your sentence
s <- "\302\277Qu\303\251 calificaci\303\263n le dar\303\255a..."

# it has no encoding
Encoding(s)
# [1] "unknown"

# but if you specify UTF-8, then it shows up correctly
iconv(s, 'UTF-8')
# [1] "¿Qué calificación le daría..."

# This also works
Encoding(s) <- 'UTF-8'
s
# [1] "¿Qué calificación le daría..."

以下是我的sessionInfo()調用的結果。 你也應該發布你的。

> sessionInfo()
R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin13.1.0 (64-bit)

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] reshape2_1.4     hexbin_1.27.0    ggplot2_1.0.0    data.table_1.9.2 yaml_2.1.13     
[6] redshift_0.4     RJDBC_0.2-4      rJava_0.9-6      DBI_0.3.1       

loaded via a namespace (and not attached):
 [1] colorspace_1.2-4 digest_0.6.4     grid_3.1.1       gtable_0.1.2     labeling_0.2    
 [6] lattice_0.20-29  MASS_7.3-33      munsell_0.4.2    plyr_1.8.1       proto_0.3-10    
[11] Rcpp_0.11.2      scales_0.2.4     stringr_0.6.2    tools_3.1.1  

更新:看起來您可能沒有支持UTF-8的語言環境。 以下是我系統上每個類別的區域設置。 您可以嘗試使用Sys.setLocale()並在系統上逐個更新它們(如果您覺得不需要逐步測試每個,請使用LC_ALL )。 ?Sys.setLocale了解更多信息

cat_str <- c("LC_COLLATE", "LC_CTYPE", "LC_MONETARY", "LC_NUMERIC",
             "LC_TIME", "LC_MESSAGES", "LC_PAPER", "LC_MEASUREMENT")
sapply(cat_str, Sys.getlocale)

# LC_COLLATE       LC_CTYPE    LC_MONETARY     LC_NUMERIC        LC_TIME    LC_MESSAGES 
# "en_US.UTF-8"  "en_US.UTF-8"  "en_US.UTF-8"            "C"  "en_US.UTF-8"  "en_US.UTF-8" 
# LC_PAPER LC_MEASUREMENT 
# ""             "" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM