1

我希望是一个简单的 SPSS 问题。如果我使用下面的语法进行表合并,但“bigfile”和“smallfile”都有一些变量的值[比如说,ChildID],那么“mergefile”是否会从 smallfile 或 bigfile 中获得 ChildID 的值?

Match files files=bigfile
/table=smallfile
/by JoinID.
dataset name mergefile.
execute.

非常感谢。-担

4

1 回答 1

1

来自精美手册:

指定文件的顺序决定了新活动数据集中变量的顺序。此外,如果相同的变量名出现在多个输入文件中,则该变量取自第一个指定的文件。

因此,对于您的特定示例,这应该表明ChildID应该是 中的值。bigfile让我们证明这一点以确保。

data list free /JoinID ChildID X.
begin data
1 1 4
1 1 5
1 1 6
1 1 7
2 2 8
2 2 9
3 3 2
3 3 1
end data.
dataset name bigfile.

data list free /JoinID ChildID Y.
begin data
1 5 4
2 5 8
3 5 2
end data.
dataset name smallfile.


match files file = 'bigfile'
/table = 'smallfile'
/by JoinID.
dataset name mergefile.
list ALL.

产生输出。

JoinID ChildID XY

1.00     1.00     4.00     4.00
1.00     1.00     5.00     4.00
1.00     1.00     6.00     4.00
1.00     1.00     7.00     4.00
2.00     2.00     8.00     8.00
2.00     2.00     9.00     8.00
3.00     3.00     2.00     2.00
3.00     3.00     1.00     2.00

您可能还对匹配文件的rename子命令(以及dropand keep)感兴趣(以防止覆盖或指定您希望最终变量来自哪个文件)。我的工作流程通常会从其中一个文件中删除案例,因为如果文件是不同长度的字符串,它们将不会合并。


下面是使用 rename 和 drop 子命令的示例(使用上面的相同示例数据)。如果您愿意,这将允许您保留后续文件中的值。

match files file = 'bigfile'
/rename = (ChildId = Old)
/table = 'smallfile'
/by JoinID
/drop Old.
dataset name mergefile2.
list ALL.
于 2013-02-13T13:35:16.050 回答