2015-06-09 38 views
0

我一直在考慮,我想用R.我使用下面的魔法來分析文件解析成R.控制編碼時使用包memisc

library(memisc) 
foo <- spss.system.file("foobar.sav") 
bar <- subset(foo, select=c(var1,var2,var3)) 

當SPSS系統文件解析SPSS文件看看分析後的數據,你會得到以下結果:

> bar 
Data set with 379 observations and 3 variables 

var1  var2  var3 
1  gut weiblich  Herbst 
2  gut mnlich  Sommer 
3  gut mnlich  Sommer 
4  gut mnlich  Winter 
5  gut mnlich Fr�hling 
6  gut mnlich Fr�hling 
7  gut weiblich Fr�hling 
. 
. 
. 
25  gut weiblich Fr�hling 
.. ........ ........... ........... 
(27 of 379 observations shown) 

我猜你明白了。我相對確定.sav文件已經使用latin1編碼保存。如何在分析SPSS文件時告訴spss.system.file()使用此編碼?

回答

1

謝謝大家的幫助。我會回答我自己的問題。 spss.system.file()按原樣讀取SPSS文件中包含的字符串,無需任何翻譯。結果字符串因此不包含任何編碼信息。該memisc包包含一個函數Iconv,但是,不正是Unix的功能iconv會做。

> library(memisc) 
> foo <- spss.system.file("foobar.sav") 
> foo <- Iconv(foo,from="Latin1",to="UTF-8") 
> foo <- as.data.frame(as.data.set(foo)) 
> head(foo$Geschlecht) 
[1] weiblich männlich männlich männlich männlich männlich 
Levels: männlich weiblich 

所有最優秀的。

0

此問題可能特定於memisc包。作爲一個快速解決方案,嘗試read.spss功能的foreign包,如果你不想堅持memisc。請考慮在您的問題中添加memisc標記。

+0

我有懷疑,這的確是我所要求的SAV文件被保存到UTF-8的'memisc'包的問題。現在解析的結果是:m \ xe4nnlich而不是mnlich。該'read.spss'功能似乎是過時的和不 - 遺憾的是 - 不行,這就是爲什麼我使用'memisc'。添加標籤'memics'不起作用,因爲它需要5000張選票才能成爲標籤。 –

0

該輸出清楚地表明函數沒有考慮文件中的字符編碼或編碼沒有正確聲明。那些?字符表示錯誤解釋或錯誤地寫入字符。我期望它們是u-umlauts,但在代碼頁1252中,e4實際上是變音符號。

Sav文件的標記編碼,所以它應該受到尊重。如果文件是由SPSS創建的,則標記是正確的,但是我們已經看到了由第三方代碼編寫的sav文件不能正確標記文件的情況。

我很確定這個文件實際上是寫在代碼頁1252中的,但是編碼可能被錯誤地聲明爲utf-8,假設上面的顯示實際上代表擴展字符。

的SPSS SYSFILE INFO命令將顯示宣告編碼,如果有的話,但你也可以看一下這個文件的第一部分的十六進制轉儲,看看它。