Main Content

本页翻译不是最新的。点击此处可查看最新英文版本。

联接表

在实时编辑器中使用键变量组合两个表

自 R2019b 起

说明

联接表任务允许您以交互方式组合两个表,可以是通过执行联接,也可以是水平或垂直串联表。该任务会自动为您的实时脚本生成 MATLAB® 代码。

使用此任务,您可以:

  • 对表执行联接,包括内联和外联,方法是指定键变量,这些表变量的匹配值(又称键值)决定要将哪些行合并到输出表中。

  • 对具有相同行数或变量数的表进行水平或垂直串联。

Join Tables task in the Live Editor

打开任务

要在 MATLAB 编辑器中将联接表任务添加到实时脚本中,请执行以下操作:

  • 实时编辑器选项卡上,选择任务 > 联接表

  • 在脚本的代码块中,键入相关关键字,例如 jointables。从建议的命令自动填充项中选择 Join Tables

示例

全部展开

使用联接表实时编辑器任务对两个表执行内联和外联。

首先,加载 orders 表,其中包含订单 ID、客户名称和每次发货对应的订单日期。

load orders
orders
orders=3×3 table
    OrderID    CustomerID     OrderDate 
    _______    __________    ___________

     5120      "Sanchez"     23-Apr-2019
     1037      "Li"          18-Apr-2019
     8937      "Johnson"     16-Apr-2019

然后加载 items 表,其中包含客户排序的产品,以及该产品的数量、价格和发货状态。和 orders 一样,该表的每行都包含订单 ID。由于客户可以订购多项产品,因此 items 中的多行可以对应于 orders 中的一笔订单。

load items
items
items=5×5 table
    OrderID        Product         Quantity    Price     Status  
    _______    ________________    ________    _____    _________

     6005      "Dozen Roses"           1       39.99    Shipped  
     1037      "Petunia Basket"        1       23.99    Delivered
     5120      "Tulips"               12        0.99    Pending  
     1037      "Gardenias"             1       17.99    Shipped  
     1037      "Gerber Daisies"        6        1.99    Delivered

打开联接表任务。要打开任务,请在代码块中键入关键字 join,并选择菜单中出现的 Join Tables

使用该任务执行 ordersitems 的内联。当任务打开时:

  1. 分别选择 ordersitems 作为左表和右表。

  2. 选择 OrderID 作为两个表的键变量。

  3. 点击内联按钮。

  4. 要查看此任务生成的代码,请点击任务参数区域底部的显示代码展开任务显示。

Live Task
joinedData=4×7 table
    OrderID    CustomerID     OrderDate         Product         Quantity    Price     Status  
    _______    __________    ___________    ________________    ________    _____    _________

     1037      "Li"          18-Apr-2019    "Petunia Basket"        1       23.99    Delivered
     1037      "Li"          18-Apr-2019    "Gardenias"             1       17.99    Shipped  
     1037      "Li"          18-Apr-2019    "Gerber Daisies"        6        1.99    Delivered
     5120      "Sanchez"     23-Apr-2019    "Tulips"               12        0.99    Pending  

当您执行内联时,输出表仅包括那些同时出现在左表和右表中的键值。

  • 只有值 10375120 同时出现在两个输入表中。因此,输出表只包含这两笔订单的数据。

  • 1037items 中出现多次,每次出现对应一项产品,但在 orders 中仅出现一次。因此,对应于 1037CustomerIDOrderDate 值会在输出中相应复制多次。

接下来,使用该任务执行左外联。外联可以包括仅出现在一个输入表中的键值。例如,左外联包括左表中的所有键值,无论它们在右表是否有相应的匹配项。如果右表中有键值在左表中没有匹配项,则这些键值不会包括在内。

  1. 点击左外联按钮。

  2. 选中合并键变量复选框。默认情况下,外联会将左表和右表中的键变量分别作为单独的变量复制到输出表中。合并键变量,使得输出中只有一个键变量。

  3. 要查看此任务生成的代码,请点击任务参数区域底部的显示代码展开任务显示。

Live Task
joinedData2=5×7 table
    OrderID    CustomerID     OrderDate         Product         Quantity    Price      Status   
    _______    __________    ___________    ________________    ________    _____    ___________

     1037      "Li"          18-Apr-2019    "Petunia Basket"        1       23.99    Delivered  
     1037      "Li"          18-Apr-2019    "Gardenias"             1       17.99    Shipped    
     1037      "Li"          18-Apr-2019    "Gerber Daisies"        6        1.99    Delivered  
     5120      "Sanchez"     23-Apr-2019    "Tulips"               12        0.99    Pending    
     8937      "Johnson"     16-Apr-2019    <missing>             NaN         NaN    <undefined>

输出表中包括订单 8937 的数据。但是,由于订单 8937items 表中没有项,因此该行的其余部分会填入空值(如 <missing>NaN<undefined>)。当左表或右表没有与键值相关联的数据时,外联用空值填充表元素。

  • 全外联包括两个表中的所有键值和数据。

  • 左外联包括左表中的所有键值和数据,以及右表中的匹配键值和相关数据。

  • 右外联包括右表中的所有键值和数据,以及左表中的匹配键值和相关数据。

相关示例

参数

全部展开

从包含工作区中所有非空表和时间表的列表中指定名称。

从包含工作区中所有非空表和时间表的列表中指定名称。

从包含左表或右表变量的列表中指定变量的名称。

  • 左表的下拉列表包含其变量的完整列表。

  • 右表的下拉列表包含变量的子集。右表键变量的列表受限于您在左表中选择的键变量。

当您指定一个键变量时,其值将决定要合并左表和右表中的哪些行。要指定多组键变量,请使用 + 按钮。

执行外联时,合并对应的键变量。默认情况下,外联会将左表和右表中的键变量分别作为单独的变量复制到输出表中。要在输出中将左表和右表中对应的键变量组合成一个变量,请选中此复选框。

版本历史记录

在 R2019b 中推出

全部展开

另请参阅

| |