Класс: набор данных
(Не рекомендуется) Объединить наблюдения массива наборов данных
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 затем использует эти ключевые переменные для определения соответствия «многие к одному» между наблюдениями в A и тех, кто в B. join использует это соответствие для репликации наблюдений в B и объединить их с наблюдениями в A создать C.
C = join(A,B,keys) выполняет слияние с использованием переменных, указанных keys в качестве ключевых переменных в обоих A и B. keys - положительное целое число, вектор положительных целых чисел, символьный вектор, строковый массив, клеточный массив символьных векторов или логический вектор.
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). join может также выполнять более сложные операции внутреннего и внешнего соединения, которые позволяют соответствие «многие ко многим» между A и Bи разрешить непревзойденные наблюдения в любом из них A или B.
C = join(A,B,'Type',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