Объединение массивов набора данных

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

См. также

|

Похожие примеры

Подробнее о

Для просмотра документации необходимо авторизоваться на сайте