使用 JMP > 重塑数据 > 连接数据表 > 连接数据表的示例
发布日期: 08/07/2020

连接数据表的示例

以下各节提供使用连接命令的示例。

按行号连接的示例

按行号连接表可并排连接两个表。新表包含两个表中的所有列,除非您指定仅包含特定列。

连接行数不等的表

若要连接的两个表的行数不等,新表将包含在两个表中找到的行的值。

1. 选择帮助 > 样本数据库,然后打开 Species1.jmpSpecies2.jmp

请注意 Species1.jmp 表包含两行,Species2.jmp 表包含四行。

2. Species1.jmp 表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Species2

4. 从匹配方式区域中,选择按行号

5. 点击确定

按行号连接的表 

若一个包含两行的表与包含四行的表连接,则新表包含四行。

连接具有相同名称的列

若两个表包含的列名相同,新表中的这些列的名称将显示为“表名”中“列名”。例如,假定您要将 Trial1.jmpTrial2.jmp 数据表(如原始表和连接表 所示)中的八行合并为一个表。您希望合并后的新表包含两个表中的所有列。

1. 选择帮助 > 样本数据库,然后打开 Trial1.jmpTrial2.jmp

2. Trial1.jmp 数据表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Trial2

4. 从匹配方式菜单中,选择按行号

5. 点击确定

原始表和连接表 

两个原始表中的列名可能相同。输出列名然后按源表名进行限定。例如,新表中的列名显示为表名称的<变量名称>。

仅连接指定列

假定不想在连接表中包括原始数据表中的所有列。按如下步骤操作:

1. 选择帮助 > 样本数据库,然后打开 Trial1.jmpTrial2.jmp

2. Trial1.jmp 数据表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Trial2

4. 从匹配方式菜单中,选择按行号

5. 点击选择连接表中要包含的列,指定要包括的列的子集。

6. 在“源列”列表中,从 Trial1 列表中选择爆米花产量,然后从 Trial2 列表中选择产量

由于两个表中的爆米花列中存在相同的数据,您只需选择一列。

7. 点击选择

8. 点击确定

仅连接指定列 

笛卡尔连接的示例

执行笛卡尔连接时,JMP 以笛卡尔方式连接两个表:由此创建的新表将包含两个原始表中所有可能的行组合。这将在输出表中创建多种情况,每种列值组合对应一种情况。

笛卡尔连接的简单示例

1. 选择帮助 > 样本数据库,然后打开 Species1.jmpSpecies2.jmp

2. Species1.jmp 表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Species2

4. 从匹配方式菜单中,选择笛卡尔连接

5. 点击确定

使用“笛卡尔连接”连接表 

Species1.jmp 中的数据与 Species2.jmp 中的数据交叉以生成连接表,其中显示每个集合中的值的所有组合。

笛卡尔连接的复杂示例

在该示例中,使用表 > 连接命令两次:

第一次连接使用笛卡尔选项将 Oil Amount.jmp 表与 Batch.jmp 表合并。

第二次连接将生成的表(笛卡尔油量 + 包型)与 Popcorn Type.jmp 表合并,并生成连接所有表的最终表。

1. 选择帮助 > 样本数据库,然后打开 Oil Amount.jmpBatch.jmpPopcorn Type.jmp

2. Oil Amount.jmp 表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Batch

4. 从匹配方式菜单中,选择笛卡尔连接

5. 输出表名称下,键入 Oil Amount and Batch

6. 点击确定

Oil Amount and Batch 连接表 

连接表包含 Oil Amount.jmpBatch.jmp 表中的所有列。添加 Popcorn Type.jmp 列,操作如下:

7. 从您刚创建的 Oil Amount and Batch 表中,选择表 > 连接

8. 与“...”连接的副表框中,选择 Popcorn Type

9. 从匹配方式菜单中,选择笛卡尔连接

10. 点击确定

与 Popcorn Type 连接的 Oil Amount and Batch 

最终表包含三个原始表中的所有列。请记住笛卡尔连接生成的行数是原始表中行数的乘积。

按匹配列连接的示例

按匹配列连接数据表时,JMP 查找位于两个表中的指定列值。与指定列值关联的所有值组合为新数据表。

要按匹配列连接,列必须具有相同的数据类型(数值型、字符型或行状态)。

您还可以将数据表连接到其自身,以便从数据表中删除重复的值或行。

连接具有相同行但排序不同的表:

1. 选择帮助 > 样本数据库,然后打开 Students1.jmpStudents2.jmp

Students1.jmp 数据表包含学生的姓名、年龄和性别。Students2.jmp 数据表包含学生的姓名、身高和体重。您希望将这两个表合并为一个表,而不是对两个单独的表执行操作。请注意,学生姓名在两个表中的顺序是不同的。例如,Alice 分别位于第 7 行和第 9 行中。

2. Students1.jmp 数据表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Students2

由于两个表都具有包含相同值的姓名列,您需要向 JMP 表明这两列是匹配列。JMP 随后检查第一个表的姓名列中的每个值,确定在第二个表的姓名列中是否有相应值。例如,JMP 检测到两个表中都存在 Alice。JMP 会在新表中创建姓名列,其中包含 Alice 这个值。随后会从第一个表中提取 Alice 的年龄和性别,将其放入新表。接着 JMP 会提取 Alice 的身高和体重,将其放入新表。

4. 在“匹配方式”区域中选择按匹配列

5. Students1Students2 列表中,选择姓名

6. 点击匹配

7. 您希望新表中对每个姓名仅包含一行,所以请为两个表均选中删除重复项框。

8. 点击确定

连接的表 

连接行数和列名均不同的表

假定 Sarah 和 Joe 要做一个爆米花实验。他们要用不同的油量制作不同类型的爆米花(gourmet 和 plain)。他们记录了产出的爆米花的量(产量)。Sarah 在名为 Trial1.jmp 的文件中给出了第一项试验的数据。Joe 在名为 Little.jmp 的文件中给出了第二项试验的数据。您希望将两个表合并为一个表。

1. 选择帮助 > 样本数据库,然后打开 Trial1.jmpLittle.jmp

2. Trial1.jmp 表中,选择表 > 连接

3. 与“...”连接的副表框中,选择 Little

您可以看到有三列(爆米花油量/油包型)在两个表中包含相同的值。将这些列标识为匹配列。此外,由于 Sarah 和 Joe 为油量列指定了不同的名称,您可以向 JMP 表明油量匹配。

4. 取消选择保留主表顺序

连接的表将按照匹配列而非 Trial1.jmp 中的数据顺序进行排序。

5. 在“匹配方式”区域中选择按匹配列

6. Trial1 列表中,选择爆米花油量包型

7. Little 列表中,选择爆米花包型

8. 点击匹配

查看这两个数据表,您可以看到其中具有不同的行数。Trial1.jmp 具有八个实验条件值,Little.jmp 仅具有其中四个实验条件值。Sarah 完成了她的实验,但 Joe 只是部分完成了他的实验。您希望连接表包含 Trial1.jmp 中的所有行,即使 Little.jmp 表中的行中包含缺失值。

9. 为这两个表选中包含不匹配项框。

在连接的表中,您只想有一列对应爆米花、一列对应、一列对应包型。但是,您希望有两个产量列:一个代表 Trial1.jmp产量,另一个代表 Little.jmp产量

10. 选中选择连接表中要包含的列旁边的框。

11. Trial1 列表中选择所有列。

12. 点击选择

13. Little 列表中,选择产量

14. 点击选择

完成的“连接”窗口 

15. 点击确定

连接的 Trial1.jmp 和 Little.jmp 

连接表按匹配列排序。请注意,来自 Little.jmp 表的产量列(“Little”中的“产量”)具有缺失值,指示没有与 Trial1.jmp 表匹配的值。

将数据表连接到其自身(以删除重复条目)

1. 选择帮助 > 样本数据库,然后打开 Coffee Shop Purchases.jmp

您可以看到有些客户在同一日期饮用了同一种饮料。您想要使用连接合并这些重复行。

2. 选择表 > 连接

3. 与“...”连接的副表框中,选择 Coffee Shop Purchases

4. 在“匹配方式”区域中选择按匹配列

5. 从两个 Coffee Shop Purchases 列表中,选择全部三个列:日期客户饮料

6. 点击匹配

7. 为两个表(主表和副表)同时选择删除重复项框。

8. 输出表名称键入 Coffee Shop Purchases Final

9. 点击确定

原始数据表和连接的 Coffee Shop Purchases 数据表 

需要更多信息?有问题?从 JMP 用户社区得到解答 (community.jmp.com).