Many to many 如何在SPSS中执行多对多或(至少)外部联接

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) 如果我运

通常我使用[R]进行数据分析,但现在我不得不使用SPSS。我原以为这样做数据操作可能会变得有点困难,但在我第一天之后,我有点屈服了:D,我真的很想得到一些帮助。。。 我的问题如下:

  • 我有两个数据集,它们有一个ID号。两个数据集都没有唯一的ID(在一个数据集中,应该有唯一的ID,有一种重复的行)
  • 在一个完美的世界中,我希望保留这个重复的行,并简单地执行多对多联接。但是我接受了,我可能必须删除这个“坏”行(在数据集A中)并执行1:many连接(将数据集B连接到数据集A,其中包含唯一ID)
  • 如果我运行join(并且接受似乎不可能运行1:many,但只能运行many:1-join),那么我就有问题了,我会丢失id。如果我将数据集A连接到数据集B,我会丢失所有不属于数据集B的案例。但我真的希望两个ID都像完全连接一样
你知道我的问题是否有(某种)简单的解决办法吗

例如:

数据集A:

身份证件 瓦尔1 1. A. 1. B 2. D 3. K 4. A.
从您的示例来看,您需要的似乎是基于数据集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.