Класс: набор данных
(Не Рекомендуемый) Объединить наблюдения массива набора данных
The 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