В этом примере показано, как объединить массивы набора данных с помощью join
.
Импортируйте данные из первого рабочего листа в hospitalSmall.xlsx
в массив набора данных затем сохраните только несколько переменных.
ds1 = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx')); ds1 = ds1(:,{'id','name','sex','age'})
ds1 = id name sex age 'YPL-320' 'SMITH' 'm' 38 'GLI-532' 'JOHNSON' 'm' 43 'PNI-258' 'WILLIAMS' 'f' 38 'MIJ-579' 'JONES' 'f' 40 'XLK-030' 'BROWN' 'f' 49 'TFP-518' 'DAVIS' 'f' 46 'LPD-746' 'MILLER' 'f' 33 'ATA-945' 'WILSON' 'm' 40 'VNL-702' 'MOORE' 'm' 28 'LQW-768' 'TAYLOR' 'f' 31 'QFY-472' 'ANDERSON' 'f' 45 'UJG-627' 'THOMAS' 'f' 42 'XUE-826' 'JACKSON' 'm' 25 'TRW-072' 'WHITE' 'm' 39
Массив набора данных, ds1
, имеет 14 наблюдений (строки) и 4 переменные (столбцы).
Импортируйте данные из рабочего листа Heights2
в hospitalSmall.xlsx
.
ds2 = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx'),'Sheet','Heights2')
ds2 = id hgt 'LPD-746' 61 'PNI-258' 62 'XUE-826' 71 'ATA-945' 72 'XLK-030' 63
ds2
имеет измерения высоты для подмножества пяти индивидуумов от первого массива набора данных, ds1
.
Используйте join
объединять два массива набора данных, ds1
и ds2
, хранение только подмножества наблюдений, которые находятся в ds2
.
JoinSmall = join(ds2,ds1)
JoinSmall = id hgt name sex age 'LPD-746' 61 'MILLER' 'f' 33 'PNI-258' 62 'WILLIAMS' 'f' 38 'XUE-826' 71 'JACKSON' 'm' 25 'ATA-945' 72 'WILSON' 'm' 40 'XLK-030' 63 'BROWN' 'f' 49
В JoinSmall
, переменная id
только появляется однажды. Это вызвано тем, что это - ключевая переменная — переменная, которая соединяет наблюдения между двумя массивами набора данных — и имеет то же имя переменной в обоих ds1
и ds2
.
Объедините ds1
и ds2
хранение всех наблюдений в большем ds1
.
joinAll = join(ds2,ds1,'type','rightouter','mergekeys',true)
joinAll = id hgt name sex age 'ATA-945' 72 'WILSON' 'm' 40 'GLI-532' NaN 'JOHNSON' 'm' 43 'LPD-746' 61 'MILLER' 'f' 33 'LQW-768' NaN 'TAYLOR' 'f' 31 'MIJ-579' NaN 'JONES' 'f' 40 'PNI-258' 62 'WILLIAMS' 'f' 38 'QFY-472' NaN 'ANDERSON' 'f' 45 'TFP-518' NaN 'DAVIS' 'f' 46 'TRW-072' NaN 'WHITE' 'm' 39 'UJG-627' NaN 'THOMAS' 'f' 42 'VNL-702' NaN 'MOORE' 'm' 28 'XLK-030' 63 'BROWN' 'f' 49 'XUE-826' 71 'JACKSON' 'm' 25 'YPL-320' NaN 'SMITH' 'm' 38
ds1
без соответствующих измерений высоты в ds2
имеет значение высоты NaN
. Кроме того, потому что нет никакого id
значение в ds2
для каждого наблюдения в ds1
, необходимо объединить ключи с помощью опции 'MergeKeys',true
. Это объединяет ключевую переменную, id
.При использовании join
, не необходимо для ключевой переменной иметь то же имя в массивах набора данных, которые будут объединены. Импортируйте данные из рабочего листа под названием Heights3
в hospitalSmall.xlsx
.
ds3 = dataset('XLSFile',fullfile(matlabroot,'help/toolbox/stats/examples','hospitalSmall.xlsx'),'Sheet','Heights3')
ds3 = identifier hgt 'GLI-532' 69 'QFY-472' 62 'MIJ-579' 61 'VNL-702' 68 'XLK-030' 63 'LPD-746' 61 'TFP-518' 60 'YPL-320' 71 'ATA-945' 72 'LQW-768' 64 'PNI-258' 62 'UJG-627' 61 'XUE-826' 71 'TRW-072' 69
ds3
имеет измерения высоты для каждого наблюдения в ds1
. Этот массив набора данных имеет те же терпеливые идентификаторы как ds1
, но они находятся под именем переменной identifier
, вместо id
(и в различном порядке).
Можно легко поменять имя переменной ключевой переменной в ds3
установкой d3.Properties.VarNames
или с помощью редактора Переменных, но это не требуется, чтобы выполнять слияние. Вместо этого можно задать имя ключевой переменной в каждом массиве набора данных с помощью LeftKeys
и RightKeys
.
joinDiff = join(ds3,ds1,'LeftKeys','identifier','RightKeys','id')
joinDiff = identifier hgt name sex age 'GLI-532' 69 'JOHNSON' 'm' 43 'QFY-472' 62 'ANDERSON' 'f' 45 'MIJ-579' 61 'JONES' 'f' 40 'VNL-702' 68 'MOORE' 'm' 28 'XLK-030' 63 'BROWN' 'f' 49 'LPD-746' 61 'MILLER' 'f' 33 'TFP-518' 60 'DAVIS' 'f' 46 'YPL-320' 71 'SMITH' 'm' 38 'ATA-945' 72 'WILSON' 'm' 40 'LQW-768' 64 'TAYLOR' 'f' 31 'PNI-258' 62 'WILLIAMS' 'f' 38 'UJG-627' 61 'THOMAS' 'f' 42 'XUE-826' 71 'JACKSON' 'm' 25 'TRW-072' 69 'WHITE' 'm' 39
Объединенный массив набора данных, joinDiff
, имеет тот же ключевой переменный порядок и имя как первый вход набора данных массивов к join
, ds3
.