包memisc中的spss.system.file在导入字符串变量时添加额外的空列

时间:2014-11-04 03:14:00

标签: r import spss

之前我曾在spss.system.file包中使用过memisc函数,并且它始终可以正常运行。但是,最近我尝试导入几个包含String变量的SPSS文件。似乎每当我使用spss.system.file导入这些变量时,它会产生6个额外的空白列。例如,如果以下字符向量是SPSS中名为Age:

的String变量
Age <- c("18 years old", "18 years old", "24", "19 years old", "18", "18")

使用spss.system.file将其读入R会导致R data.frame(在从data.set转换后)使用包含实际数据的Age变量(类{ {1}})然后factorAge0,... Age1 - 所有课程Age6,但都完全为空。

有没有人有过这个问题的经验或者是什么导致它的想法?我知道可能将SPSS文件转换为factor文件可能会使读取更好,但这需要安装SPSS。

3 个答案:

答案 0 :(得分:2)

您可以使用外部包中的read.spss函数并设置为.data.frame = TRUE和stringAsFactors = FALSE。 sji.viewSPSS函数不会阻止将字符串转换为因子,我可能会更改它或为此功能添加至少一个选项。

编辑,由于新的软件包开发 您现在也可以尝试haven-package(现在也在CRAN上)或the updated sjPlot package,它也使用避风套的读取功能。

答案 1 :(得分:0)

您是否可以尝试使用sjPlot包读取.sav文件并查看是否收到相同的错误?

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

答案 2 :(得分:0)

好的,这件事对我有用,但我不明白为什么。答案是:在你的spss文件(变量视图)中将字符串变量的宽度更改为更短的值。究竟有多短是不够短也不够清楚它甚至似乎在变量之间变化(?!)但是当没有真正的宽字符串变量时,额外的空列也将消失。 (作为奖励,我们会稍微考虑因素水平中的尾随空白量)