【发布时间】:2011-12-03 06:04:37
【问题描述】:
我有两个版本的 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 的错误的最佳方法吗? :-)
编辑:我在标题行中使用了“错误”一词。我会离开它,但我不应该使用这个词。下面的 cmets 正确指出我看到的消息是警告,而不是错误。然而,我确实认为这在上述问题的正文中已经明确。显然,SPSS 数据格式随着时间的推移发生了变化,而 SPSS/IBM 未能记录这些变化,这是问题的根源。
【问题讨论】:
-
没有真正的洞察力,但可以呼应每次我从 SPSS 导入 R 时都会收到一连串这些警告的情绪。如果它让你感觉更好,我不科学的手册会检查 b/t R 和SPSS一直显示数据导入没有错误。我希望我们能对此有所了解!
-
我很高兴听到您看到的数据似乎已正确导入。我的问题是我不能承受错误,并且处理日期的东西已经够棘手了,我不想因为这个警告可能告诉我们而冒任何错误的风险。我不能告诉我的老板我的交叉表有点偏离,因为我使用的是 R 而不是 SPSS。这些天再找一份工作太难了。 :-)
-
虽然我对您的 cmets 对 R 列表的刻薄表示同情,但我也同意其他评论者的观点,即将此视为 R 中的错误是不公平的。R 正在尽其所能,并警告您可能有问题。我认为,如果您想尝试自己修复/诊断此问题,则必须非常熟悉调试 R 代码的 C 组件。首先跟踪 C 代码中的特定行(即 sfm-read.c 的第 585 行)。弄清楚它是什么函数(read_machine_flt64_info),然后对...进行源码级调试
-
(to) 在该函数中设置断点,并在读取相关文件时单步执行。 (我认为您需要 R 扩展手册来获取此信息。)如果您没有准备好执行此操作(即设置了调试环境并熟悉 C 代码的源代码级调试),这将是一个艰难的跋涉。但是,我认为您没有太多选择-您可以(1)深入研究并尝试自己解决[而且我确实认为,如果您在解决问题时遇到麻烦,您会遇到R开发名单上的积极接待...]; (2) 聘请顾问:
-
(3) 学会接受警告。