我有两个版本的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
Run Code Online (Sandbox Code Playgroud)
.sav文件非常简单.它有两列,哑和笨.两者都是整数.前两个包含两个值1.0.第二行包含两个值2.0.我可以根据要求提供文件(我没有看到任何方式将其上传到SO).如果有人想看到实际的文件,PM我和我会发给你.
dumb dumber
1.0 1.0
2.0 2.0
Run Code Online (Sandbox Code Playgroud)
思考?任何人都知道在没有在邮件列表上活着烤的情况下提交针对R的错误的最佳方法吗?:-)
编辑:我在标题行中使用了术语"错误".我会离开它,但我不应该使用这个词.下面的评论是正确的,指出我看到的消息是警告,而不是错误.但我觉得这在上述问题的正文中已经明确了.很明显,SPSS数据格式随着时间的推移而发生了变化,SPSS/IBM未能记录这些问题的根源.
42-*_*42- 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创建的文件.