将 SPSS 文件读入 R 抛出错误 - 读取系统文件头时出错
reading SPSS file into R throwing error - error reading system-file header
最近,我在使用 foreign
包中的 read.spss
读取 SPSS 文件时有时会出错:
Error in read.spss("sample.sav") : error reading system-file header In
addition: Warning message: In read.spss("sample.sav") : sample.sav:
Bad format specifier byte (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
$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
故事的寓意:有时阅读所有帮助文件会更好。由于我过去曾阅读过相同的帮助页面,因此我惊讶地发现它已被修改。过去有关于版本限制的评论,现在似乎已被删除。
我会使用 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)
最近,我在使用 foreign
包中的 read.spss
读取 SPSS 文件时有时会出错:
Error in read.spss("sample.sav") : error reading system-file header In addition: Warning message: In read.spss("sample.sav") : sample.sav: Bad format specifier byte (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
$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
故事的寓意:有时阅读所有帮助文件会更好。由于我过去曾阅读过相同的帮助页面,因此我惊讶地发现它已被修改。过去有关于版本限制的评论,现在似乎已被删除。
我会使用 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)