9

我有两个版本的 SPSS 在工作。在 Windows XP 上运行的 SPSS 11 和在 Linux 上运行的 SPSS 20。SPSS 的两个副本都可以正常工作。使用任一版本的 SPSS 创建的文件可以在其他版本的 SPSS 上正常打开。IE - 我可以在 Linux 上使用 SPSS 20 创建一个 .sav 文件,然后在 Windows 上的 SPSS 11 上打开它而不会发生意外。

但是,如果我使用 SPSS 20 创建一个 .sav 文件并将数据导入 R 或 PSPP(在 Linux 上),我会收到一堆警告。数据似乎可以正确导入,但我担心这些警告。从 SPSS 11 或其他已发送的 .sav 文件导入 .sav 时,我没有看到任何警告。我公司的许多分析师都使用 SPSS,所以我从不同版本的 SPSS 中获取了 SPSS 文件,而我以前从未见过这个警告。PSPP 和 R 之间的警告消息几乎相同,这是有道理的。AFAIK,他们使用相同的底层库来导入数据。这是 R 错误:

Warning messages:
1: In read.spss("test.sav") :
test.sav: File-indicated value is different from internal value for at least one of  the three system values.  SYSMIS: indicated -1.79769e+308, expected -1.79769e+308; HIGHEST: 1.79769e+308, 1.79769e+308; LOWEST: -1.79769e+308, -1.79769e+308   

2: In read.spss("test.sav") :
test.sav: Unrecognized record type 7, subtype 18 encountered in system file

.sav 文件非常简单。它有两列,哑和哑。两者都是整数。前两个包含两个值 1.0。第二行包含两个值 2.0。我可以根据要求提供文件(我看不到任何上传到 SO 的方法)。如果有人想查看实际文件,请 PM 我,我会发送给您。

dumb  dumber
1.0   1.0
2.0   2.0

想法?任何人都知道在邮件列表中不被活生生烤死的情况下提交针对 R 的错误的最佳方法吗?:-)

编辑:我在标题行中使用了“错误”一词。我会离开它,但我不应该使用这个词。下面的评论正确地指出我看到的消息是警告,而不是错误。然而,我确实认为这在上述问题的正文中已经明确。显然,SPSS 数据格式随着时间的推移发生了变化,而 SPSS/IBM 未能记录这些变化,这是问题的根源。

4

2 回答 2

11

这不是错误消息。这只是一个警告。SPSS 拒绝记录他们的文件格式,因此人们没有动力通过逆向工程来追踪新“子类型”的结构。没有办法在不被烤的情况下提交错误报告,因为没有错误....除了封闭格式之外,应该向 SPSS 的所有者提交错误投诉!

编辑:R-Core 是一个志愿者团体,非常重视它的责任。它付出了巨大的努力来追踪任何影响系统稳定性或产生错误计算的东西。如果您愿意对 R 的作者多一点尊重,并建议在 R-devel 邮件列表上进行合作以找出解决这个问题的方法,而不使用“bug”一词,那么您会引起更少的敌意。可能有人愿意查看一个简单的 .sav 文件(例如您构建的文件)是否可以在十六进制显微镜下检查,以识别被误认为是另一个无限负值的无限负值。大多数 R-Core 没有 SPSS 的工作副本。

您可以提供此链接作为尝试对 SPSS .sav 格式进行逆向工程的其他人的产品示例:

http://svn.opendatafoundation.org/ddidext/org.opendatafoundation.data/references/pspp_source/sfm-read.c

编辑:4/2015;我看到最近在?read.spss帮助文件中添加了一个引用 pkg:memisc 的内容:“包 memisc 中提供了基于 PSPP 代码库的不同接口:请参阅它的帮助spss.system.file。” 我已经成功地(一次)在最新版本的 SPSS 创建的文件上使用了该包的功能。

于 2011-10-07T20:23:08.487 回答
1

SPSS 文件格式没有公开记录并且可以更改,但 IBM SPSS 确实提供了可以读取和写入 SAV 文件格式的免费库。这些掩盖了对格式的任何更改。您可以从 SPSS Community 网站获取它们(以及许多其他免费的好东西,包括 SPSS 与 R 的集成)。转至 www.ibm.com/developerworks/spssdevcentral 并环顾四周。顺便说一句,自 2000 年以来对 sav 文件进行了大量添加/更改,尽管旧版本仍然可以读取核心数据。

HTH,乔恩·派克

于 2011-10-09T23:15:36.577 回答