exponenta event banner

соединение

Объединение двух таблиц или расписаний по строкам с использованием ключевых переменных

Описание

пример

T = join(Tleft,Tright) объединяет таблицы или расписания Tleft и Tright с использованием ключевых переменных. Все переменные с одинаковыми именами в обеих таблицах являются ключевыми переменными. Соединение таблиц добавляет строки из правой таблицы, где ключевые переменные совпадают со значениями ключевых переменных левой таблицы. Например, если Tleft имеет переменные с именем Key1 и Var1, и Tright имеет переменные Key1 и Var2, то T=join(Tleft,Tright) использование Key1 в качестве ключевой переменной.

Совпадающие значения ключевых переменных в левой и правой таблицах не должны совпадать. Кроме того, ключевые переменные Tright должны содержать все значения в ключевых переменных Tleft. Каждое значение должно присутствовать только один раз в ключевых переменных Tright, но может происходить несколько раз в ключевых переменных Tleft.

Входными данными могут быть таблицы, расписания или один из них.

  • Если Tleft является таблицей, то join прибыль T в виде таблицы.

  • Если Tleft является расписанием, то join прибыль T в качестве расписания.

Векторы меток строк Tleft и Tright могут быть ключевыми переменными. Метки строк - это имена строк таблицы или время строк расписания.

пример

T = join(Tleft,Tright,Name,Value) объединяет таблицы или расписания с дополнительными опциями, указанными одним или несколькими Name,Value аргументы пары.

Например, можно указать, какие переменные использовать в качестве ключевых.

пример

[T,iright] = join(___) также возвращает вектор индекса iright таким образом, чтобы каждый элемент iright определяет строку в Tright которая соответствует этой строке в T. Этот синтаксис можно использовать с любым из входных аргументов предыдущих синтаксисов.

Примеры

свернуть все

Создание таблицы, Tleft.

Tleft = table({'Janice','Jonas','Javier','Jerry','Julie'}',[1;2;1;2;1],...
        'VariableNames',{'Employee' 'Department'})
Tleft=5×2 table
     Employee     Department
    __________    __________

    {'Janice'}        1     
    {'Jonas' }        2     
    {'Javier'}        1     
    {'Jerry' }        2     
    {'Julie' }        1     

Создание таблицы, Tright, с переменной, общей с Tleft.

Tright = table([1 2]',{'Mary' 'Mona'}',...
         'VariableNames',{'Department' 'Manager'})
Tright=2×2 table
    Department    Manager 
    __________    ________

        1         {'Mary'}
        2         {'Mona'}

Создайте новую таблицу, T, содержащий данные из таблиц Tleft и Tright. Используйте join функция для повторения и добавления Manager данные из таблицы Tright к данным из таблицы Tleft, на основе ключевой переменной, Department.

T = join(Tleft,Tright)
T=5×3 table
     Employee     Department    Manager 
    __________    __________    ________

    {'Janice'}        1         {'Mary'}
    {'Jonas' }        2         {'Mona'}
    {'Javier'}        1         {'Mary'}
    {'Jerry' }        2         {'Mona'}
    {'Julie' }        1         {'Mary'}

Создание таблицы, Tleft.

Tleft = table([5;12;23;2;6],...
        {'cereal';'pizza';'salmon';'cookies';'pizza'},...
        'VariableNames',{'Age','FavoriteFood'},...
        'RowNames',{'Amy','Bobby','Holly','Harry','Sally'})
Tleft=5×2 table
             Age    FavoriteFood
             ___    ____________

    Amy       5     {'cereal' } 
    Bobby    12     {'pizza'  } 
    Holly    23     {'salmon' } 
    Harry     2     {'cookies'} 
    Sally     6     {'pizza'  } 

Создание таблицы, Tright, с одной переменной, общей с Tleft.

Tright = table({'cereal';'cookies';'pizza';'salmon';'cake'},...
         [110;160;140;367;243],...
         {'B';'D';'B-';'A';'C-'},...
         'VariableNames',{'FavoriteFood','Calories','NutritionGrade'})
Tright=5×3 table
    FavoriteFood    Calories    NutritionGrade
    ____________    ________    ______________

    {'cereal' }       110           {'B' }    
    {'cookies'}       160           {'D' }    
    {'pizza'  }       140           {'B-'}    
    {'salmon' }       367           {'A' }    
    {'cake'   }       243           {'C-'}    

Создайте новую таблицу, T, с данными из таблиц Tleft и Tright. Общая переменная, FavoriteFood, используется в качестве ключевой переменной join функция.

T = join(Tleft,Tright)
T=5×4 table
             Age    FavoriteFood    Calories    NutritionGrade
             ___    ____________    ________    ______________

    Amy       5     {'cereal' }       110           {'B' }    
    Bobby    12     {'pizza'  }       140           {'B-'}    
    Holly    23     {'salmon' }       367           {'A' }    
    Harry     2     {'cookies'}       160           {'D' }    
    Sally     6     {'pizza'  }       140           {'B-'}    

Стол T не включает информацию из последней строки таблицы Tright о нас 'cake' потому что в таблице нет соответствующей записи Tleft.

Создание таблицы, Tleft.

Tleft = table([10;4;2;3;7],[5;4;9;6;1],[10;3;8;8;4])
Tleft=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     10      5       10 
      4      4        3 
      2      9        8 
      3      6        8 
      7      1        4 

Создание таблицы, Tright, дарение Var2 таблицы Tright то же содержимое, что и Var2 из таблицы Tleft.

Tright = table([6;1;1;6;8],[5;4;9;6;1])
Tright=5×2 table
    Var1    Var2
    ____    ____

     6       5  
     1       4  
     1       9  
     6       6  
     8       1  

Создайте новую таблицу, T, содержащий данные из таблиц Tleft и Tright. Использовать Var2 в таблицах Tleft и Tright в качестве ключевой переменной для join функция.

T = join(Tleft,Tright,'Keys','Var2')
T=5×4 table
    Var1_Tleft    Var2    Var3    Var1_Tright
    __________    ____    ____    ___________

        10         5       10          6     
         4         4        3          1     
         2         9        8          1     
         3         6        8          6     
         7         1        4          8     

join добавляет уникальный суффикс к неключевой переменной, Var1, для отличия данных от таблиц Tleft и Tright.

Создание новой таблицы с данными из таблиц Tleft и Tright. Если какие-либо неключевые переменные имеют одинаковые имена в обеих таблицах, сохраните только копию из таблицы Tleft.

Создание таблицы, Tleft.

Tleft = table([10;4;2;3;7],[5;4;9;6;1])
Tleft=5×2 table
    Var1    Var2
    ____    ____

     10      5  
      4      4  
      2      9  
      3      6  
      7      1  

Создание таблицы, Tright, дарение Var2 таблицы Tright то же содержимое, что и Var2 из таблицы Tleft.

Tright = table([6;1;1;6;8],[5;4;9;6;1],[10;3;8;8;4])
Tright=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     6       5       10 
     1       4        3 
     1       9        8 
     6       6        8 
     8       1        4 

Создайте новую таблицу, T, с данными из таблиц Tleft и Tright. Использовать Var2 в качестве ключевой переменной для join и хранить только копию Var1 из таблицы Tleft. Выходная таблица T не содержит Var1 данные из таблицы Tright.

T = join(Tleft,Tright,'Keys','Var2','KeepOneCopy','Var1')
T=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     10      5       10 
      4      4        3 
      2      9        8 
      3      6        8 
      7      1        4 

Создание таблицы, Tleft.

Tleft = table(['M';'M';'F';'F';'F'],[38;43;38;40;49],...
        'VariableNames',{'Gender' 'Age'},...
        'RowNames',{'Smith' 'Johnson' 'Williams' 'Jones' 'Brown'})
Tleft=5×2 table
                Gender    Age
                ______    ___

    Smith         M       38 
    Johnson       M       43 
    Williams      F       38 
    Jones         F       40 
    Brown         F       49 

Создание таблицы, Tright, таким образом, что строки Tleft и строки Tright иметь переписку «один к одному».

Tright = table([64;69;67;71;64],...
         [119;163;133;176;131],...
         [122 80; 109 77; 117 75; 124 93; 125 83],...
         'VariableNames',{'Height' 'Weight' 'BloodPressure'},...
         'RowNames',{'Brown' 'Johnson' 'Jones' 'Smith' 'Williams'})
Tright=5×3 table
                Height    Weight    BloodPressure
                ______    ______    _____________

    Brown         64       119       122     80  
    Johnson       69       163       109     77  
    Jones         67       133       117     75  
    Smith         71       176       124     93  
    Williams      64       131       125     83  

Создайте новую таблицу, T, с данными из таблиц Tleft и Tright. Используйте векторы имен строк в качестве ключевых переменных. (Имя вектора имен строк таблицы: 'Row', как показано Tleft.Properties.DimensionNames{1}.)

T = join(Tleft,Tright,'Keys','Row')
T=5×5 table
                Gender    Age    Height    Weight    BloodPressure
                ______    ___    ______    ______    _____________

    Smith         M       38       71       176       124     93  
    Johnson       M       43       69       163       109     77  
    Williams      F       38       64       131       125     83  
    Jones         F       40       67       133       117     75  
    Brown         F       49       64       119       122     80  

Строки T находятся в том же порядке, что и Tleft.

Создание таблицы, Tleft.

Tleft = table([10;4;2;3;7],[5;4;9;6;1],[10;3;8;8;4])
Tleft=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

     10      5       10 
      4      4        3 
      2      9        8 
      3      6        8 
      7      1        4 

Создание таблицы, Tright, дарение Var2 таблицы Tright то же содержимое, что и Var1 из таблицы Tleft, но в другом порядке.

Tright = table([6;1;1;6;8],[2;3;4;7;10])
Tright=5×2 table
    Var1    Var2
    ____    ____

     6        2 
     1        3 
     1        4 
     6        7 
     8       10 

Создайте новую таблицу, T, содержащий данные из таблиц Tleft и Tright. Использовать Var1 из таблицы Tleft с Var2 из таблицы Tright в качестве ключевых переменных для join функция.

[T,iright] = join(Tleft,Tright,'LeftKeys',1,'RightKeys',2)
T=5×4 table
    Var1_Tleft    Var2    Var3    Var1_Tright
    __________    ____    ____    ___________

        10         5       10          8     
         4         4        3          1     
         2         9        8          6     
         3         6        8          1     
         7         1        4          6     

iright = 5×1

     5
     3
     1
     2
     4

T - горизонтальная конкатенация Tleft и Tright(iright,1).

Создайте два расписания, которые имеют одно и то же время строки, но разные переменные.

Traffic = [0.8 0.9 0.1 0.7 0.9]';
Noise = [0 1 1.5 2 2.3]';
Tleft = timetable(hours(1:5)',Traffic,Noise)
Tleft=5×2 timetable
    Time    Traffic    Noise
    ____    _______    _____

    1 hr      0.8         0 
    2 hr      0.9         1 
    3 hr      0.1       1.5 
    4 hr      0.7         2 
    5 hr      0.9       2.3 

Distance = [0.88 0.86 0.91 0.9 0.86]';
Tright = timetable(hours(1:5)',Distance)
Tright=5×1 timetable
    Time    Distance
    ____    ________

    1 hr      0.88  
    2 hr      0.86  
    3 hr      0.91  
    4 hr       0.9  
    5 hr      0.86  

Объедините расписания. join использует время строки в качестве ключевых переменных.

T = join(Tleft,Tright)
T=5×3 timetable
    Time    Traffic    Noise    Distance
    ____    _______    _____    ________

    1 hr      0.8         0       0.88  
    2 hr      0.9         1       0.86  
    3 hr      0.1       1.5       0.91  
    4 hr      0.7         2        0.9  
    5 hr      0.9       2.3       0.86  

Создайте расписание и таблицу.

Measurements = [0.13 0.22 0.31 0.42 0.53 0.57 0.67 0.81 0.90 1.00]';
Device = ['A';'B';'A';'B';'A';'B';'A';'B';'A';'B'];
Tleft = timetable(seconds(1:10)',Measurements,Device)
Tleft=10×2 timetable
     Time     Measurements    Device
    ______    ____________    ______

    1 sec         0.13          A   
    2 sec         0.22          B   
    3 sec         0.31          A   
    4 sec         0.42          B   
    5 sec         0.53          A   
    6 sec         0.57          B   
    7 sec         0.67          A   
    8 sec         0.81          B   
    9 sec          0.9          A   
    10 sec           1          B   

Device = ['A';'B'];
Accuracy = [0.023;0.037];
Tright = table(Device,Accuracy)
Tright=2×2 table
    Device    Accuracy
    ______    ________

      A        0.023  
      B        0.037  

Объедините расписание и таблицу. Device является ключевой переменной, поскольку обе Tleft и Tright имеют переменную с таким именем. T - это расписание.

T = join(Tleft,Tright)
T=10×3 timetable
     Time     Measurements    Device    Accuracy
    ______    ____________    ______    ________

    1 sec         0.13          A        0.023  
    2 sec         0.22          B        0.037  
    3 sec         0.31          A        0.023  
    4 sec         0.42          B        0.037  
    5 sec         0.53          A        0.023  
    6 sec         0.57          B        0.037  
    7 sec         0.67          A        0.023  
    8 sec         0.81          B        0.037  
    9 sec          0.9          A        0.023  
    10 sec           1          B        0.037  

Входные аргументы

свернуть все

Левая таблица, заданная как таблица или расписание. Для всех ключевых переменных каждая строка Tleft должно совпадать ровно с одной строкой в Tright.

Правая таблица, заданная как таблица или расписание. Для всех ключевых переменных каждая строка Tright должно совпадать ровно с одной строкой в Tleft.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Keys',2 использует вторую переменную в Tleft и вторую переменную в Tright в качестве ключевых переменных.

Переменные для использования в качестве ключей, определяемые как разделенная запятыми пара, состоящая из 'Keys' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.

Вы не можете использовать 'Keys' аргумент пары имя-значение с 'LeftKeys' и 'RightKeys' аргументы пары имя-значение.

Вектор меток строк из входной таблицы или расписания может быть ключом, отдельно или в сочетании с другими ключевыми переменными. Метки строк - это имена строк таблицы или время строк расписания. Чтобы использовать этот вектор в качестве ключа, укажите его как 'Row' (для имен строк таблицы), как имя вектора расписания времени строки или как значение T.Properties.DimensionNames{1}, где T - таблица или расписание.

Для обратной совместимости можно также указать значение 'Keys' как 'RowNames' когда Tleft и Tright таблицы с именами строк. Однако лучше всего указать значение 'Keys' в качестве имени вектора имен строк.

Пример: 'Keys',[1 3] использует первую и третью переменные из Tleft и Tright в качестве ключевых переменных.

Пример: 'Keys',{'X','Y'} использует переменные с именем X и Y в Tleft и Tright в качестве ключевых переменных.

Пример: 'Keys','Row' использует векторы имен строк Tleft и Tright в качестве ключевых переменных, если обе Tleft и Tright таблицы с именами строк.

Переменные для использования в качестве ключей в Tleft, указанная как пара, разделенная запятыми, состоящая из 'LeftKeys' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.

Необходимо использовать 'LeftKeys' аргумент пары имя-значение в сочетании с 'RightKeys' аргумент пары имя-значение. 'LeftKeys' и 'RightKeys' оба должны указывать одинаковое количество ключевых переменных. join пары ключевых значений в Tleft и Tright на основании их порядка.

Вектор меток строк из входной таблицы или расписания может быть ключом, отдельно или в сочетании с другими ключевыми переменными. Метки строк - это имена строк таблицы или время строк расписания. Чтобы использовать этот вектор в качестве ключа, укажите его как 'Row' (для имен строк таблицы), как имя вектора расписания времени строки или как значение T.Properties.DimensionNames{1}, где T - таблица или расписание.

Пример: 'LeftKeys',1 использует только первую переменную в Tleft в качестве ключевой переменной.

Переменные для использования в качестве ключей в Tright, указанная как пара, разделенная запятыми, состоящая из 'RightKeys' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.

Необходимо использовать 'RightKeys' аргумент пары имя-значение в сочетании с 'LeftKeys' аргумент пары имя-значение. 'LeftKeys' и 'RightKeys' оба должны указывать одинаковое количество ключевых переменных. join пары ключевых значений в Tleft и Tright на основании их порядка.

Вектор меток строк из входной таблицы или расписания может быть ключом, отдельно или в сочетании с другими ключевыми переменными. Метки строк - это имена строк таблицы или время строк расписания. Чтобы использовать этот вектор в качестве ключа, укажите его как 'Row' (для имен строк таблицы), как имя вектора расписания времени строки или как значение T.Properties.DimensionNames{1}, где T - таблица или расписание.

Пример: 'RightKeys',3 использует только третью переменную в Tright в качестве ключевой переменной.

Переменные из Tleft для включения в T, указанная как пара, разделенная запятыми, состоящая из 'LeftVariables' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.

Вы можете использовать 'LeftVariables' для включения или исключения ключевых переменных, а также неключевых переменных из T. Однако нельзя включать имена строк или время строк из Tleft, потому что они не являются переменными.

По умолчанию join включает все переменные из Tleft.

Переменные из Tright для включения в T, указанная как пара, разделенная запятыми, состоящая из 'RightVariables' и положительное целое число, вектор положительных целых чисел, символьный вектор, клеточный массив символьных векторов, строковый массив или логический вектор.

Вы можете использовать 'RightVariables' для включения или исключения ключевых переменных, а также неключевых переменных из T. Однако нельзя включать имена строк или время строк из Tright, потому что они не являются переменными.

По умолчанию join включает все переменные из Tright за исключением ключевых переменных.

Переменные, для которых join сохраняет только копию из Tleft, указанная как пара, разделенная запятыми, состоящая из 'KeepOneCopy' и символьный вектор, массив ячеек символьных векторов или строковый массив, задающий имена переменных.

Ключевые переменные появляются один раз в T, но если неключевые переменные с одинаковыми именами встречаются в Tleft и Tright, то join сохраняет обе копии в T по умолчанию. Используйте 'KeepOneCopy' пара имя-значение, чтобы сохранить только копию из Tleft.

Пример: 'KeepOneCopy',Var2 сохраняет только копию из Tleft неключевой переменной Var2.

Выходные аргументы

свернуть все

Объединенные данные из Tleft и Tright, возвращено в виде таблицы или расписания. Таблица, T, содержит одну строку для каждой строки в Tleft, появляясь в том же порядке.

join создает T путем горизонтального конкатенации Tleft(:,LeftVars) и Tright(iright,RightVars). По умолчанию LeftVars - все переменные Tleft, и RightVars - все неключевые переменные из Tright. В противном случае LeftVars состоит из переменных, указанных 'LeftVariables' аргумент пары имя-значение, и RightVars состоит из переменных, указанных 'RightVariables' аргумент пары имя-значение.

Если Tleft и Tright содержат неключевые переменные с тем же именем, join добавляет уникальный суффикс к соответствующим именам переменных в T, если не указано значение 'KeepOneCopy' аргумент пары имя-значение.

Если Tleft является таблицей, то T также является таблицей. Если Tleft является расписанием и Tright является расписанием или таблицей, то T - это расписание.

Дополнительные метаданные можно хранить в T, например, описания, единицы измерения переменных, имена переменных и имена строк. Дополнительные сведения см. в разделах «Свойства» table или timetable.

Индекс в Tright, возвращается в виде вектора столбца. Каждый элемент iright определяет строку в Tright , которая соответствует этой строке в выходной таблице или расписании, T.

Подробнее

свернуть все

Ключевая переменная

Переменная, используемая для сопоставления и объединения данных между входными таблицами Tleft и Tright.

Ключевое значение

Значение в ключевой переменной Tleft или Tright.

Алгоритмы

join функция сначала находит одну или несколько ключевых переменных. Затем, join использует ключевые переменные для поиска строки во входной таблице Tright который соответствует каждой строке во входной таблице Tleftи объединяет эти строки для создания строки в выходной таблице T.

  • При наличии сопоставления один к одному между ключевыми значениями в Tleft и Tright, то join сортирует данные в Tright и добавляет его в таблицу Tleft.

  • Если существует сопоставление «многие к одному» между ключевыми значениями в Tleft и Tright, то join сортирует и повторяет данные в Tright перед добавлением в таблицу Tleft.

  • При наличии данных в ключевой переменной Tright который не сопоставляется с ключевым значением в Tleft, то join не включает эти данные в выходную таблицу; T.

Расширенные возможности

.
Представлен в R2013b