2014-11-04 10 views
1

我之前幾次在memisc包中使用了spss.system.file函數,並且它始終無誤地工作。但是,最近我試過導入幾個包含字符串變量的SPSS文件。似乎只要我使用spss.system.file來導入這些變量,就會產生6個額外的空白列。例如,如果滿足下列字符向量在SPSS名爲年齡String變量:包中的spss.system.file memisc在導入字符串變量時添加額外的空列

Age <- c("18 years old", "18 years old", "24", "19 years old", "18", "18") 

spss.system.file讀它在至R將導致的R data.frame與含有實際的Age變量(從data.set轉換之後)數據(類別爲factor),然後Age0,Age1,... Age6 - 全部爲factor,但全部爲空。

有沒有人有任何這個問題的經驗或造成它的原因?我知道可能將SPSS文件轉換爲portable文件可能會使讀取效果更好,但這需要安裝SPSS。

+0

我在Hmisc中使用spss.get具有相同的功能。不知道是什麼原因造成的,雖然 – Vincent 2015-06-03 09:37:42

+0

更新:我現在有一個想法,看到下面的答案 – Vincent 2015-06-03 10:23:48

回答

1

您可以使用外來包中的read.spss函數,並將其設置爲.data.frame = TRUE和stringAsFactors = FALSE。 sji.viewSPSS函數不會阻止將字符串轉換爲因子,我可能會更改它或爲此功能添加至少一個選項。

編輯,由於新包裝的發展 你可以現在也嘗試haven-package(也CRAN現在)或the updated sjPlot package,它也使用避風港的閱讀功能。

0

你可以嘗試使用sjPlot包來讀取.sav文件,看看你是否得到相同的錯誤?

install.packages("sjPlot"); library(sjPlot) 
df <- sji.SPSS(...) 
sji.viewSPSS(df) 

0

好的,這是對我有用的東西,但我不明白爲什麼。答案是:在您的spss文件(變量視圖)中,將字符串變量的寬度更改爲更短。確切地說,短多短是不夠清楚的,甚至似乎在變量(?!)之間變化,但是當沒有真正寬的字符串變量時,多餘的空列也會消失。 (作爲獎勵我們在一定程度上決定了因素水平的尾隨空白的數量)

+0

只是別的,可能對有更多理解的人有用:我從來沒有設法導入spss文件沒有得到(看似無辜)「無法識別的記錄類型7,在系統文件中遇到的子類型18」警告。然而,在導致上述問題的文件(不是OP的示例)中,還有兩個類似的警告:記錄類型7子類型14和記錄類型7子類型21. 現在有趣的部分:在我縮短了所有spss中的字符串變量不僅會使問題消失,還會導致子類型14警告。 (其他兩個仍然在那裏) – Vincent 2015-06-03 10:22:37

相關問題