Many to many 如何在SPSS中执行多对多或(至少)外部联接
通常我使用[R]进行数据分析,但现在我不得不使用SPSS。我原以为这样做数据操作可能会变得有点困难,但在我第一天之后,我有点屈服了:D,我真的很想得到一些帮助。。。 我的问题如下:Many to many 如何在SPSS中执行多对多或(至少)外部联接,many-to-many,spss,outer-join,Many To Many,Spss,Outer Join,通常我使用[R]进行数据分析,但现在我不得不使用SPSS。我原以为这样做数据操作可能会变得有点困难,但在我第一天之后,我有点屈服了:D,我真的很想得到一些帮助。。。 我的问题如下: 我有两个数据集,它们有一个ID号。两个数据集都没有唯一的ID(在一个数据集中,应该有唯一的ID,有一种重复的行) 在一个完美的世界中,我希望保留这个重复的行,并简单地执行多对多联接。但是我接受了,我可能必须删除这个“坏”行(在数据集A中)并执行1:many连接(将数据集B连接到数据集A,其中包含唯一ID) 如果我运
- 我有两个数据集,它们有一个ID号。两个数据集都没有唯一的ID(在一个数据集中,应该有唯一的ID,有一种重复的行)
- 在一个完美的世界中,我希望保留这个重复的行,并简单地执行多对多联接。但是我接受了,我可能必须删除这个“坏”行(在数据集A中)并执行1:many连接(将数据集B连接到数据集A,其中包含唯一ID)
- 如果我运行join(并且接受似乎不可能运行1:many,但只能运行many:1-join),那么我就有问题了,我会丢失id。如果我将数据集A连接到数据集B,我会丢失所有不属于数据集B的案例。但我真的希望两个ID都像完全连接一样
从您的示例来看,您需要的似乎是基于数据集a中存在的ID的完整多对多联接。您可以通过创建两个数据集的完整笛卡尔积,使用数据集a作为第一个\左数据集来实现这一点。
以下语法假定您已安装STATS CARTPROD extension命令。如果你不知道,你可以考虑安装它 首先,我将重新创建您的示例来演示:
dataset close all.
data list list/id1 vl1 (2F3) .
begin data
1 232
1 433
2 456
3 246
4 468
end data.
dataset name aaa.
data list list/id2 vl2 (2F3) .
begin data
1 111
2 222
4 333
5 444
5 555
5 666
2 777
3 888
end data.
dataset name bbb.
现在实际工作相当简单:
DATASET ACTIVATE aaa.
STATS CARTPROD VAR1=id1 vl1 INPUT2=bbb VAR2=id2 vl2
/SAVE OUTFILE="C:\somepath\yourcartesianproduct.sav".
* The new dataset now contains all possible combinations of rows in the two datasets.
* we will select only the relevant combinations, where the two ID's match.
select if id1=id2.
exe.