Класс: набор данных
Объедините наблюдения
Тип данных 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. keys является положительным целым числом, вектором положительных целых чисел, вектора символов, массива строк, массива ячеек из символьных векторов или логического вектора.
C содержит одно наблюдение для каждого наблюдения в A. Переменные в C включают все переменные из A, а также одну переменную, соответствующую каждой переменной в B (за исключением ключей от B). Если A и B содержат переменные с идентичными именами, join добавляет суффиксный '_left' и '_right' к соответствующим переменным в C.
C = join(A,B, задает дополнительное название параметра / пары значения, чтобы управлять, как переменные набора данных в param1,val1,param2,val2,...)A и B используются в слиянии. Параметры:
ключи Задает переменные, чтобы использовать в качестве ключей и 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 может также выполнить более сложное внутреннее объединение и операции внешнего соединения, которые позволяют many-many соответствие между 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 заменяет включение или исключение любых ключевых переменных, заданных через параметр 'RightVars' или 'LeftVars'. Установка параметра '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