В этом примере показано, как объединить массивы набора данных с помощью 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
.