соединение

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

Синтаксис

C = join(A,B)
C = join(A,B,Name,Value)
[C,ib] = join(___)

Описание

пример

C = join(A,B) таблицы слияний или расписания A и B совпадением строк с помощью всех переменных с теми же именами как ключевые переменные. Например, если A имеет переменные под названием X, Y и Z, и B имеет переменные W, X и Y, то C=join(A,B) использует X и Y как ключевые переменные.

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

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

  • Если A является таблицей, то join возвращает C как таблицу.

  • Если A является расписанием, то join возвращает C как расписание.

join сохраняет все переменные из A и добавляет соответствующее содержимое от неключевых переменных B.

Векторы меток строки A и B могут быть ключевыми переменными. Метки строки являются именами строки таблицы, или времена строки расписания.

пример

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

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

пример

[C,ib] = join(___) также возвращает индексный вектор ib, таким образом, что каждый элемент ib идентифицирует строку в B, который соответствует той строке в C. Можно использовать этот синтаксис с любым из входных параметров предыдущих синтаксисов.

Примеры

свернуть все

Составьте таблицу, A.

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

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

Составьте таблицу, B, с переменной вместе с A.

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

        1         'Mary' 
        2         'Mona' 

Составьте новую таблицу, C, содержа данные из таблиц A и B. Используйте функцию join, чтобы повторить и добавить данные Manager от таблицы B до данных из таблицы A, на основе ключевой переменной, Department.

C = join(A,B)
C=5×3 table
    Employee    Department    Manager
    ________    __________    _______

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

Составьте таблицу, A.

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

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

Составьте таблицу, B, с одной переменной вместе с A.

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

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

Составьте новую таблицу, C, с данными из таблиц A и B. Переменная вместе, FavoriteFood, используется в качестве ключевой переменной функцией join.

C = join(A,B)
C=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-'     

Таблица C не включает информацию из последней строки таблицы B о 'cake', потому что нет никакой соответствующей записи в таблице A.

Составьте таблицу, A.

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

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

Составьте таблицу, B, дав Var2 таблицы B то же содержимое как Var2 из таблицы A.

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

     6       5  
     1       4  
     1       9  
     6       6  
     8       1  

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

C = join(A,B,'Keys','Var2')
C=5×4 table
    Var1_A    Var2    Var3    Var1_B
    ______    ____    ____    ______

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

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

Составьте новую таблицу с данными из таблиц A и B. Если какие-либо неключевые переменные имеют то же имя в обеих таблицах, сохраните только копию с таблицы A.

Составьте таблицу, A.

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

     10      5  
      4      4  
      2      9  
      3      6  
      7      1  

Составьте таблицу, B, дав Var2 таблицы B то же содержимое как Var2 из таблицы A.

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

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

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

C = join(A,B,'Keys','Var2','KeepOneCopy','Var1')
C=5×3 table
    Var1    Var2    Var3
    ____    ____    ____

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

Составьте таблицу, A.

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

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

Составьте таблицу, B, такой, что строки A и строки B имеют взаимно-однозначное соответствие.

B = 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'})
B=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  

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

C = join(A,B,'Keys','Row')
C=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  

Строки C находятся в том же порядке как A.

Составьте таблицу, A.

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

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

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

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

     6        2 
     1        3 
     1        4 
     6        7 
     8       10 

Составьте новую таблицу, C, содержа данные из таблиц A и B. Используйте Var1 из таблицы A с Var2 из таблицы B как ключевые переменные к функции join.

[C,ib] = join(A,B,'LeftKeys',1,'RightKeys',2)
C=5×4 table
    Var1_A    Var2    Var3    Var1_B
    ______    ____    ____    ______

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

ib = 5×1

     5
     3
     1
     2
     4

C является горизонтальной конкатенацией A и B(ib,2).

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

Traffic = [0.8 0.9 0.1 0.7 0.9]';
Noise = [0 1 1.5 2 2.3]';
A = timetable(hours(1:5)',Traffic,Noise)
A=5×3 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]';
B = timetable(hours(1:5)',Distance)
B=5×2 timetable
    Time    Distance
    ____    ________

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

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

C = join(A,B)
C=5×4 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'];
A = timetable(seconds(1:10)',Measurements,Device)
A=10×3 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];
B = table(Device,Accuracy)
B=2×2 table
    Device    Accuracy
    ______    ________

      A        0.023  
      B        0.037  

Объедините расписание и таблицу. Device является ключевой переменной, потому что и A и B имеют переменную с тем именем. C является расписанием.

C = join(A,B)
C=10×4 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  

Входные параметры

свернуть все

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

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

Вектор меток строки может быть ключевой переменной. Метки строки являются именами строки таблицы или времена строки расписания. Можно задать 'Keys', когда строка маркирует только как одна или несколько переменных в A и B, или как метки строки и переменные вместе.

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

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

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

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

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

Вектор меток строки может быть ключевой переменной. Метки строки являются именами строки таблицы или времена строки расписания. Можно задать 'LeftKeys' как метки строки A как одна или несколько переменных в A, или как метки строки и переменные вместе.

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

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

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

Вектор меток строки может быть ключевой переменной. Метки строки являются именами строки таблицы или времена строки расписания. Можно задать 'RightKeys' как метки строки B как одна или несколько переменных в B, или как метки строки и переменные вместе.

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

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

Можно использовать 'LeftVariables', чтобы включать или исключить ключевые переменные, а также неключевые переменные, от C. Однако вы не можете включить имена строк или времена строки от A, потому что они не переменные.

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

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

Можно использовать 'RightVariables', чтобы включать или исключить ключевые переменные, а также неключевые переменные, от C. Однако вы не можете включить имена строк или времена строки от B, потому что они не переменные.

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

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

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

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

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

свернуть все

Объединенные данные из A и B, возвращенного как таблица или расписание. Таблица, C, содержит одну строку для каждой строки в A, появляющемся в том же порядке.

join создает C путем горизонтальной конкатенации A(:,LeftVars) и B(ib,RightVars). По умолчанию LeftVars является всеми переменными A, и RightVars является всеми неключевыми переменными из B. В противном случае LeftVars состоит из переменных, заданных аргументом пары "имя-значение" 'LeftVariables', и RightVars состоит из переменных, заданных аргументом пары "имя-значение" 'RightVariables'.

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

Если A является таблицей, то C является также таблицей. Если A является расписанием, и B является или расписанием или таблицей, то C является расписанием.

Можно сохранить дополнительные метаданные в C, таком как описания, переменные модули, имена переменных и имена строки. Для получения дополнительной информации смотрите разделы Свойств table или timetable.

Индексируйте к B, возвращенному как вектор-столбец. Каждый элемент ib идентифицирует строку в B, который соответствует той строке в выходной таблице или расписании, C.

Больше о

свернуть все

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

Переменная раньше совпадала и комбинировала данные между входными таблицами A и B.

'KeyValue'

Запись в ключевой переменной A.

Алгоритмы

Функция join сначала находит одну или несколько ключевых переменных. Затем join использует ключевые переменные, чтобы найти строку во входной таблице B, который совпадает с каждой строкой во входной таблице A и комбинирует те строки, чтобы создать строку в выходной таблице C.

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

  • Если существует отображение many-one между значениями ключа в A и B, то виды join и повторяют данные в B прежде, чем добавить его к таблице A.

  • Если существуют данные в ключевой переменной B, который не сопоставляет со значением ключа в A, то join не включает те данные в выходную таблицу, C.

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

Смотрите также

|

Введенный в R2013b