【发布时间】:2019-04-12 08:54:57
【问题描述】:
尝试在 R 中读取 SPSS 文件(.sav 格式)引发:
错误:文件不是任何受支持的 SPSS 格式。
当尝试使用 foreign 和 read.spss 读取 .sav 文件时会发生这种情况。
尝试memsicpackage 和它的as.data.set(spss.system.file("my_file")) raises:
spss.readheader(file) 中的错误:不是 sysfile
该文件是一个非常长的 SPSS 文件,包含超过 200 万个条目和数百个因子。因素各不相同:许多是分类的“是”/“否”/“缺失”/“无”,有些是数字(IDS 等),有些标有文本(“状态一”/“状态 2”/“状态 3 ”)和一些混合(“1”/“20”/“3732”/“技术问题”)。遗憾的是,我无法向您提供我的数据子集(对隐私的严格限制,而且我没有 SPSS 许可证)。
读入此文件并将其存储为羽毛文件(.fea 格式)已经在另一台计算机上工作 - 可能安装了另一个版本的 R。我无法检查那是什么版本... 目前,我在 Windows 10 上使用 R 版本 3.4.4 (2018-03-2015),并使用包 memisc_0.99.17.2 和 foreign_0.8-71。该文件存储在服务器上,我的 R 安装在本地驱动器上的用户中。
这是我尝试过的代码:
require(foreign)
ws <- "my_workspace_in_local_user"
setwd(ws)
dataDir <- "my_directory_on_the_server_containing_the_file"
fn <- paste0(dataDir, "my_file.sav")
dat <- read.spss(fn, to.data.frame = TRUE)
和
require(foreign)
ws <- "my_workspace_in_local_user"
setwd(ws)
dataDir <- "my_directory_on_the_server_containing_the_file"
fn <- paste0(dataDir, "my_file.sav")
install.packages("memisc")
require("memisc")
dat <- as.data.set(fn, to.data.frame = TRUE)
有人知道为什么这不起作用吗?我怀疑这是使用哪个版本的 R 和软件包的问题...?
【问题讨论】:
-
您是否能够读取任何其他 .sav 文件?您是否能够读取与当前文件位于同一目录中的任何其他 .sav 文件?您是否检查过 fn 是否真的包含 .sav 文件的正确路径?也许它只是一个小错字或什么?
-
你可以先下载文件试试。
-
@TinglTanglBob 我刚刚尝试从 [a spss 教程] (spss.allenandunwin.com.s3-website-ap-southeast-2.amazonaws.com/…) 打开“调查”.sav 文件。我将它存储在与我的文件相同的目录中并且它有效。 fn 确实包含指向该文件的链接,我三重检查了没有错字。
-
@RomanLuštrik 这样文件就存放在工作目录中了吗?我已将文件存储在工作目录中;仍然得到同样的错误。
-
直接从 .sav 获取文件对您来说重要吗?如果没有,我会尝试用 spss 打开 .sav 文件并将其另存为 .txt。之后,我会尝试使用任何标准函数(如 read.table 或 data.table::fread)用 r 读取 .txt。