我希望这是一个简单的SPSS问题。如果我使用下面的语法进行表合并,但"bigfile"one_answers"smallfile"都有某个变量的值[比如ChildID],那么"mergefile"的ChildID值是来自smallfile还是来自bigfile?
Match files files=bigfile
/table=smallfile
/by JoinID.
dataset name mergefile.
execute.
非常感谢。-Dan
来自精细手册:
指定文件的顺序决定了新活动数据集中的变量。此外,如果相同的变量name出现在多个输入文件中,变量取自首先指定的文件。
因此,对于您的特定示例,这应该表明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 X Y
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
子命令(以及drop
和keep
)感兴趣(以防止重写或指定最终变量来自哪个文件)。我的工作流程通常会从其中一个文件中删除案例,因为如果文件是不同长度的字符串,它们就不会合并。
下面是使用重命名和删除子命令的示例(使用与上面相同的示例数据)。这将允许您保留后续文件中的值(如果您喜欢的话)。
match files file = 'bigfile'
/rename = (ChildId = Old)
/table = 'smallfile'
/by JoinID
/drop Old.
dataset name mergefile2.
list ALL.