我希望是一个简单的SPSS问题。如果我使用下面的语法进行表合并,但“bigfile”和“smallfile”都有某些变量的值[比如,ChildID],那么'mergefile'是否具有来自smallfile或bigfile的ChildID的值?
Match files files=bigfile
/table=smallfile
/by JoinID.
dataset name mergefile.
execute.
非常感谢你。 -Dan
答案 0 :(得分:1)
来自精细的手册:
指定文件的顺序决定了文件的顺序 新活动数据集中的变量。另外,如果变量相同 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.