join

Класс: набор данных

(Не Рекомендуемый) объединение наблюдений массивов данных

dataset тип данных не рекомендуется. Чтобы работать с гетерогенными данными, используйте MATLAB® table тип данных вместо этого. Смотрите MATLAB table документация для получения дополнительной информации.

Синтаксис

C = join(A,B)
C = join(A,B,keys)
C = join(A,B,param1,val1,param2,val2,...)
[C,IB] = join(...)
C = join(A,B,'Type',TYPE,...)
C = join(A,B,'Type',TYPE,'MergeKeys',true,...)
[C,IA,IB] = join(A,B,'Type',TYPE,...)

Описание

C = join(A,B) создает массив набора данных C путем слияния наблюдений от двух массивов набора данных A и B. join выполняет слияние первыми ключевыми переменными открытия, то есть, парами переменных набора данных, один в A и один в B, та доля то же имя. Каждое наблюдение в B должен содержать уникальную комбинацию значений в ключевых переменных и должен содержать все комбинации значений, которые присутствуют в ключах от A. join затем использование эти ключевые переменные, чтобы задать many-one соответствие между наблюдениями в A и те в B. join использование это соответствие, чтобы реплицировать наблюдения в B и объедините их с наблюдениями в A создать C.

C = join(A,B,keys) выполняет слияние с помощью переменных, заданных keys как ключевые переменные в обоих A и Bключи положительное целое число, вектор из положительных целых чисел, вектора символов, массива строк, массива ячеек из символьных векторов или логического вектора.

C содержит одно наблюдение для каждого наблюдения в A. Переменные в C включайте все переменные из A, а также одна переменная, соответствующая каждой переменной в B (за исключением ключей от B). Если A и B содержите переменные с идентичными именами, join добавляет суффиксный '_left' и '_right' к соответствующим переменным в C.

C = join(A,B,param1,val1,param2,val2,...) задает дополнительное название параметра / пары значения, чтобы управлять как переменные набора данных в A и B используются в слиянии. Параметры:

  • 'Keys' — Задает переменные, чтобы использовать в качестве ключей в обоих A и B.

  • 'LeftKeys' — Задает переменные, чтобы использовать в качестве ключей в A.

  • 'RightKeys' — Задает переменные, чтобы использовать в качестве ключей в B.

Можно предоставить любому 'Keys' параметр или оба 'LeftKeys' и 'RightKeys' параметры. Значение для этих параметров является положительным целым числом, вектором из положительных целых чисел, вектора символов, массива строк, массива ячеек из символьных векторов или логического вектора. 'LeftKeys' или 'RightKeys' должен и задать то же количество ключевых переменных и join соединяет левые и правые ключи в заданном порядке.

  • 'LeftVars' — Задает который переменные из A включать в C. По умолчанию, join включает все переменные из A.

  • 'RightVars' — Задает который переменные из B включать в C. По умолчанию, join включает все переменные из B кроме ключевых переменных.

Можно использовать 'LeftVars' или 'RightVars' включать или исключить ключевые переменные, а также переменные данных. Значение для этих параметров является положительным целым числом, вектором из положительных целых чисел, вектора символов, массива строк, массива ячеек из символьных векторов или логического вектора.

[C,IB] = join(...) возвращает вектор индекса IB, где join построения C путем горизонтальной конкатенации A(:,LeftVars) и B(IB,RightVars)соединение может также выполнить более сложное внутреннее объединение и операции внешнего соединения, которые позволяют many-many соответствие между A и B, и позвольте несопоставленные наблюдения в любом A или B.

C = join(A,B,'Type',TYPE,...) выполняет операцию соединения, заданную TYPEВвод один из 'inner', 'leftouter', 'rightouter', 'fullouter', или 'outer' (который является синонимом для 'fullouter'). Для внутреннего объединения, C только содержит наблюдения, соответствующие комбинации значений ключа, которые произошли в обоих A и B. Для левого (или право) внешнее соединение, C также содержит наблюдения, соответствующие ключам в A (или B) это не совпадало ни с кем в B (или A). Переменные в C взятый из A (или B) содержите нулевые значения в тех наблюдениях. Полное внешнее соединение эквивалентно левому и правому внешнему соединению. C содержит переменные, соответствующие ключевым переменным из обоих A и B, и join сортирует наблюдения в C значениями ключа.

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

C = join(A,B,'Type',TYPE,'MergeKeys',true,...) включает одну переменную в C для каждой ключевой переменной пары от A и B, вместо включения двух отдельных переменных. Для внешних соединений, join создает одну переменную путем слияния значений ключа от A и B, принимающие значения от A где соответствующее наблюдение существует в A, и от B в противном случае. Установка 'MergeKeys' параметр к true включение переопределений или исключение любых ключевых переменных заданы через 'LeftVars' или 'RightVars' параметр. Установка 'MergeKeys' параметр к false эквивалентно не передаче в 'MergeKeys' параметр.

[C,IA,IB] = join(A,B,'Type',TYPE,...) возвращает векторы индекса IA и IB указание на соответствие между наблюдениями в C и те в A и B. Для внутреннего объединения, join построения C путем горизонтальной конкатенации A(IA,LeftVars) и B(IB,RightVars). Для внешнего соединения, IA или IB май также содержит нули, указывая на наблюдения в C это не соответствует наблюдениям в A или B, соответственно.

Примеры

Создайте массив набора данных из ирисовых данных Фишера:

load fisheriris
NumObs = size(meas,1);
NameObs = strcat({'Obs'},num2str((1:NumObs)','%-d'));
iris = dataset({nominal(species),'species'},...
               {meas,'SL','SW','PL','PW'},...
               'ObsNames',NameObs);

Создайте разделять массив набора данных с диплоидными счетами хромосомы для каждой разновидности ирисовой диафрагмы:

snames = nominal({'setosa';'versicolor';'virginica'});
CC = dataset({snames,'species'},{[38;108;70],'cc'})
CC = 
    species       cc 
    setosa         38
    versicolor    108
    virginica      70

Широковещательно передайте данные в CC к строкам iris использование ключевой переменной species в каждом наборе данных:

iris2 = join(iris,CC);
iris2([1 2 51 52 101 102],:)
ans = 
           species       SL     SW     PL     PW     cc 
 Obs1      setosa        5.1    3.5    1.4    0.2     38
 Obs2      setosa        4.9      3    1.4    0.2     38
 Obs51     versicolor      7    3.2    4.7    1.4    108
 Obs52     versicolor    6.4    3.2    4.5    1.5    108
 Obs101    virginica     6.3    3.3      6    2.5     70
 Obs102    virginica     5.8    2.7    5.1    1.9     70

Создайте два набора данных и соедините их использующий 'MergeKeys' флаг:

% Create two data sets that both contain the key variable 
% 'Key1'. The two arrays contain observations with common
% values of Key1, but each array also contains observations
% with values of Key1 not present in the other.
a = dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]',...
   'VarNames',{'Key1' 'Var1'})
b = dataset({'a' 'b' 'd' 'e'}',[4 5 6 7]',...
   'VarNames',{'Key1' 'Var2'})

% Combine a and b with an outer join, which matches up
% observations with common key values, but also retains
% observations whose key values don't have a match. 
% Keep the key values as separate variables in the result.
couter = join(a,b,'key','Key1','Type','outer')

% Join a and b, merging the key values as a single variable
% in the result.
coutermerge = join(a,b,'key','Key1','Type','outer',...
   'MergeKeys',true)

% Join a and b, retaining only observations whose key
% values match.
cinner = join(a,b,'key','Key1','Type','inner',...
   'MergeKeys',true) 

a = 

    Key1       Var1
    'a'         1  
    'b'         2  
    'c'         3  
    'e'        11  
    'h'        17  


b = 

    Key1       Var2
    'a'        4   
    'b'        5   
    'd'        6   
    'e'        7   


couter = 

    Key1_left    Var1    Key1_right    Var2
    'a'            1     'a'             4 
    'b'            2     'b'             5 
    'c'            3     ''            NaN 
    ''           NaN     'd'             6 
    'e'           11     'e'             7 
    'h'           17     ''            NaN 


coutermerge = 

    Key1       Var1    Var2
    'a'          1       4 
    'b'          2       5 
    'c'          3     NaN 
    'd'        NaN       6 
    'e'         11       7 
    'h'         17     NaN 


cinner = 

    Key1       Var1    Var2
    'a'         1      4   
    'b'         2      5   
    'e'        11      7  

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