将SPSS文件读入R throw错误 - 读取系统文件头错误

时间:2015-03-24 14:40:24

标签: r spss

最近,我在使用read.spss包中的foreign读取SPSS文件时有时会出错:

  

read.spss(“sample.sav”)出错:读取系统文件头错误   另外:警告消息:在read.spss(“sample.sav”)中:sample.sav:   格式说明符字节错误(0)

我制作了一个只有一个变量的小sample.sav文件和3个导致错误的案例。 Download the file或使用

download.file("http://134.102.100.220/~mark/sample.sav", "sample.sav")
read.spss("sample.sav")

有什么想法吗?

我的系统

R version 3.1.1 (2014-07-10)
Platform: x86_64-apple-darwin10.8.0 (64-bit)
foreign: Version 0.8-63

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

2 个答案:

答案 0 :(得分:3)

$FL2@(#) IBM SPSS STATISTICS DATA FILE 64-bit Macintosh 20.0.0 ����������������������Y@24 Mar 1515:00:55electric paper �������������������VAR1 ���None�������������������������������–�����������È˝��������������ˇˇˇˇˇˇÔˇˇˇˇˇˇˇÔ˛ˇˇˇˇˇÔˇ���

这是在简单文本编辑器(TextEdit.app)中查看的标题。因此,阅读read.spss的帮助文件,可以看出它建议使用:

install.packages("memisc")

?memisc::spss.system.file
 memisc::spss.system.file("~/Downloads/sample.sav")
#-=----------------
SPSS system file '/Users/davidwinsemius/Downloads/sample.sav' 
    with 1 variables and 3 observations
 inp <- memisc::spss.system.file("~/Downloads/sample.sav")

 actual <- memisc::subset(inp, select= c(var1=var1))
 actual

Data set with 3 observations and 1 variables

  var1
1    1
2    2
3    3

故事的寓意:有时候阅读所有帮助文件会更好。由于我过去曾阅读过相同的帮助页面,因此我惊讶地发现它已被修改。过去有关于版本限制的评论,现在似乎已被删除。

答案 1 :(得分:2)

我会使用haven包而不是foreign来读取spss文件:

require("haven")
sample <- read_spss("sample.sav")
View(sample)

您也可以使用sjPlot软件包,该软件包使用haven来完成繁重的工作:

require("sjPlot")
sample <- sjPlot::read_spss("sample.sav", option = "haven")
View(sample)

使用sjPlot,您还可以查看变量标签和值:

sjPlot::view_spss(sample)