【问题标题】:How to perform a many-to-many or (at least) a outer-join in SPSS如何在 SPSS 中执行多对多或(至少)外连接
【发布时间】:2021-03-04 14:38:35
【问题描述】:

通常我使用 [R] 进行数据分析,但现在我必须使用 SPSS。我原以为这样数据操作可能会变得更加困难,但在我第一天之后,我有点投降了:D,我真的很感激一些帮助...... 我的问题如下:

  • 我有两个数据集,它们都有一个 ID 号。两个数据集都没有唯一 ID(在一个应该有唯一 ID 的数据集中,有一种重复的行)
  • 在一个完美的世界中,我想保留这个重复的行并简单地执行多对多连接。但我接受了,我可能必须删除这个“坏”行(在数据集 A 中)并执行 1:many-join(将数据集 B 连接到包含唯一 ID 的数据集 A)。
  • 如果我运行联接(并接受似乎不可能运行 1:many,而只能运行 many:1-join),我会遇到问题,即我丢失了 ID。如果我将数据集 A 连接到数据集 B,我会丢失所有不属于数据集 B 的案例。但我真的希望两个 ID 都像完全连接或其他东西一样。

你知道我的问题是否有(某种)简单的解决方案?

例子:

数据集 A:

ID VAL1
1 A
1 B
2 D
3 K
4 A

数据集 B:

ID VAL2
1 g
2 k
4 a
5 c
5 d
5 a
2 x

预期结果(最佳解决方案):

ID VAL1 VAL2
1 A g
1 B g
2 D k
3 K NA
4 A a
2 D x

预期结果(第二好的解决方案):

ID VAL1 VAL2
1 A g
2 D k
3 K NA
4 A a
5 NA c
5 NA d
5 NA a
2 D x

我得到了什么(最坏的解决方案):

ID VAL1 VAL2
1 A g
2 D k
4 A a
5 NA c
5 NA d
5 NA a
2 D x

【问题讨论】:

    标签: many-to-many spss outer-join


    【解决方案1】:

    从您的示例看来,您需要的是一个完整的多对多连接,基于数据集 A 中存在的 ID。您可以通过创建两个数据集的完整笛卡尔积来获得此结果,使用数据集 A 作为第一个\左数据集。
    以下语法假定您已安装 STATS CARTPROD 扩展命令。如果你不这样做,你可以看到here关于安装它。

    首先,我将重新创建您的示例以进行演示:

    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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 2012-05-15
      • 2023-02-15
      • 1970-01-01
      • 2017-02-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多