join

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

Описание

пример

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 добавляет уникальный суффикс к переменной nonkey, 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' (для имен строк таблицы), как имя вектора timetable с указанием времени строки или как значение 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' (для имен строк таблицы), как имя вектора timetable с указанием времени строки или как значение T.Properties. DimensionNames {1}, где T - таблица или расписание.

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

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

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

Вектор меток строк из входа таблицы или расписания может быть ключом, отдельно или в комбинации с другими ключевыми переменными. Метки строк являются именами строк таблицы или временами строк расписания. Чтобы использовать этот вектор в качестве ключа, задайте его как 'Row' (для имен строк таблицы), как имя вектора timetable с указанием времени строки или как значение 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 переменной nonkey 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 который соответствует этой строке в таблице выхода или timetable, T.

Подробнее о

свернуть все

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

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

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

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

Алгоритмы

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

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

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

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

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

.
Введенный в R2013b