首页 文章

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

提问于
浏览
2

最近,我在使用 foreign 包中的 read.spss 读取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")

有任何想法吗?

My system

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 回答

  • 3

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

    这是在简单的文本编辑器(TextEdit.app)中查看的 Headers . 因此,阅读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
    

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

  • 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)
    

相关问题