many-to-many - 如何在 SPSS 中执行多对多或(至少)外连接
问题描述
通常我使用 [R] 进行数据分析,但现在我必须使用 SPSS。我原以为这样数据操作可能会变得更加困难,但是在我第一天之后,我有点投降了:D,我真的很感激一些帮助......我的问题如下:
- 我有两个数据集,它们有一个 ID 号。两个数据集都没有唯一的 ID(在一个应该有唯一 ID 的数据集中,有一种重复的行)
- 在一个完美的世界中,我想保留这个重复的行并简单地执行多对多连接。但我接受了,我可能必须删除这个“坏”行(在数据集 A 中)并执行 1:many-join(将数据集 B 连接到包含唯一 ID 的数据集 A)。
- 如果我运行连接(并接受似乎不可能运行 1:many,而只能运行 many:1-join),我会遇到问题,即我丢失了 ID。如果我将数据集 A 加入数据集 BI 会丢失所有情况,这不是数据集 B 的一部分。但我真的希望两个 ID 都像完全连接或其他东西一样。
你知道我的问题是否有(某种)简单的解决方案?
例子:
数据集 A:
ID | VAL1 |
---|---|
1 | 一个 |
1 | 乙 |
2 | D |
3 | ķ |
4 | 一个 |
数据集 B:
ID | VAL2 |
---|---|
1 | G |
2 | ķ |
4 | 一个 |
5 | C |
5 | d |
5 | 一个 |
2 | X |
预期结果(最佳解决方案):
ID | VAL1 | VAL2 |
---|---|---|
1 | 一个 | G |
1 | 乙 | G |
2 | D | ķ |
3 | ķ | 不适用 |
4 | 一个 | 一个 |
2 | D | X |
预期结果(第二好的解决方案):
ID | VAL1 | VAL2 |
---|---|---|
1 | 一个 | G |
2 | D | ķ |
3 | ķ | 不适用 |
4 | 一个 | 一个 |
5 | 不适用 | C |
5 | 不适用 | d |
5 | 不适用 | 一个 |
2 | D | X |
我得到什么(最坏的解决方案):
ID | VAL1 | VAL2 |
---|---|---|
1 | 一个 | G |
2 | D | ķ |
4 | 一个 | 一个 |
5 | 不适用 | C |
5 | 不适用 | d |
5 | 不适用 | 一个 |
2 | D | X |
解决方案
从您的示例看来,您需要的是一个完整的多对多连接,基于数据集 A 中存在的 ID。您可以通过创建两个数据集的完整笛卡尔积来获得此结果,使用数据集 A 作为第一个 \left数据集。
以下语法假定您已安装 STATS CARTPROD 扩展命令。如果你不这样做,你可以在这里看到关于安装它的信息。
首先,我将重新创建您的示例以演示:
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.
推荐阅读
- go - 从 MySQL 加载配置详细信息
- apache-spark - 用于 Spark 3.0 的 Elasticsearch
- angular - 无法使用服务在 Angular 中的组件之间共享数据
- amazon-web-services - 如何使用 downloadContent sourceInfo StringMap 正确格式化 AWS System Manager 文档中的语法
- angular - 创建或更新数据后表不刷新
- r - 在 R 中反应
- python-3.x - 从firefox为(instagram bot)项目获取整数形式的文本val
- elasticsearch - 使用来自应用程序的 Kibana 视图查询
- ios - 文本字段键盘类型在 SwiftUI 中不起作用
- php - 删除姓氏但保留首字母