0

尝试将一个 spss 文件的变量添加到另一个文件时,我一直遇到错误。文件 1 有 1.800.000 个案例 [付款],文件 2 有 800.000 个案例 [收件人]。他们都有一个 ID 号来匹配案件。

对于文件 1 中的每一笔付款,我想从文件 2 中添加收件人。因此,收件人应该能够匹配多笔付款。

这是我一直在尝试的两个代码,它们不起作用:

使用 IN 的代码

      DATASET ACTIVATE DataSet1. 
      SORT CASES BY recipientid(A).
      DATASET ACTIVATE DataSet2. 
      SORT CASES BY recipientid(A).

      Match Files /File=DataSet1
      /In=DataSet2
      /BY globalrecipientid.
      execute

当我使用 /In 时,我没有收到任何错误,但文件与 sin 不正确匹配,它不会添加任何变量。

使用 TABLE 的代码

      DATASET ACTIVATE DataSet1. 
      SORT CASES BY recipientid(A).
      DATASET ACTIVATE DataSet2. 
      SORT CASES BY recipientid(A).

      Match Files /File=DataSet1
      /TABLE=DataSet2
      /BY globalrecipientid.
      execute

当我使用 /TABLE 时,出现以下错误:

警告 #5132 未定义错误 #5132 - 无法打开文本文件 'S:\Progra~1\spss\IBM\SPSS\STATIS~1\20\lang\en\spss.err":没有这样的文件或目录

我已经用完了技巧,不敢在 Ruby 中尝试这个,遗憾的是,excel 太小而无法处理这个.. 有什么想法吗?

4

2 回答 2

1

您的第一个解决方案是错误的,因为您IN错误地使用了子命令。换句话说,您将 Dataset1 与任何内容匹配。

IN 在结果文件中创建一个新变量,该变量指示案例是否来自前面 FILE 子命令中命名的输入文件。

你的第二个解决方案。您正在按变量对数据集进行排序,recipientid但由变量match files完成globalrecipientid。为什么您按一个变量排序但按另一个变量匹配?这可能是个问题。数据集名称应该用引号引起来。

解决方案1:

DATASET ACTIVATE DataSet1. 
SORT CASES BY recipientid (A).

DATASET ACTIVATE DataSet2. 
SORT CASES BY recipientid (A).

Match Files
 /File = "DataSet1"
 /TABLE = "DataSet2" 
 /BY recipientid.

execute.

解决方案 2. 我从不喜欢 SPSS 中数据集的实现。我不信任他们。其他解决方案是将数据集保存为文件并进行文件匹配。

get "file1.sav".
SORT CASES BY recipientid (A).
save out "file1s.sav".

get "file2.sav".
SORT CASES BY recipientid (A).
save out "file2s.sav".

Match Files
 /File = "file1s.sav"
 /TABLE = "file2s.sav"
 /BY recipientid.

execute.
于 2013-03-14T16:00:05.533 回答
0

我的语法看起来有些不同:

数据集激活数据集 1。匹配文件 /FILE=* /FILE='DatenSet2' /RENAME VarsToRename /BY ID /DROP= Vars EXECUTE。

也许这有帮助?

于 2013-03-14T14:02:00.513 回答