我有两个版本的SPSS在工作。在Windows XP上运行的SPSS 11和在Linux上运行的SPSS 20。 SPSS的两个副本都可以正常工作。使用任一版本的SPSS创建的文件在其他版本的SPSS上打开而不会发生意外。 I.E. - 我可以在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未能记录这些问题的根源。
答案 0 :(得分:11)
这不是错误消息。这只是一个警告。 SPSS拒绝记录他们的文件格式,因此人们没有动力通过逆向工程来追踪新的“子类型”的结构。由于没有错误,所以没有办法提交错误报告,因为没有错误....除了封闭的格式,并且应该向SPSS的所有者提交错误投诉!
编辑:R-Core是一个志愿者小组,非常认真地对待它。它致力于追踪影响系统稳定性或产生错误计算的任何事情。如果你愿意更加尊重R的作者并建议在R-devel邮件列表上合作的可能性来确定这个问题的解决方案而不使用术语“bug”,那么你会引起更少的敌意。可能有人愿意看一个简单的.sav文件,例如您构建的文件,可以在十六进制显微镜下检查,以确定无限的负值被误认为是另一个无限的负值。大多数R-Core没有SPSS的工作副本。您可以提供此链接作为尝试对SPSS .sav格式进行逆向工程的其他人的产品示例:
编辑:2015年4月;我已经看到最近添加了?read.spss
帮助文件,其中一个引用了pkg:memisc:“基于PSPP代码库的不同接口在包memisc中可用:请参阅spss.system.file
的帮助。”我已成功(一次)使用该软件包的函数对由最新版本的SPSS创建的文件。
答案 1 :(得分:1)
SPSS文件格式未公开记录并且可以更改,但IBM SPSS确实提供了可以读取和写入SAV文件格式的免费库。这些掩盖了对格式的任何更改。您可以从SPSS社区网站获取它们(以及许多其他免费赠品,包括SPSS与R的集成)。访问www.ibm.com/developerworks/spssdevcentral并环顾四周。顺便说一句,自2000年以来,sav文件已经有了大量的增加/更改,尽管旧版本仍然可以读取核心数据。
HTH, 乔恩佩克