SPSS表与两个数据集中存在的额外变量合并:保留哪个值?

时间:2013-02-12 14:25:24

标签: merge spss

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

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

非常感谢你。 -Dan

1 个答案:

答案 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子命令(以及dropkeep)感兴趣(以防止覆盖或指定您想要的文件来自的最终变量)。我的工作流程通常会从其中一个文件中删除案例,因为如果文件是不同长度的字符串,则不会合并。


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

match files file = 'bigfile'
/rename = (ChildId = Old)
/table = 'smallfile'
/by JoinID
/drop Old.
dataset name mergefile2.
list ALL.