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