intersection between a dataset and a cell array

Hi all, I have a dataset abc (6x1)and a cell array xyz(4x1). I want to find the common observations. Dataset abc:

'ObsNames' y
'obs1'    0
'obs2'    0
'obs3'    0
'obs4'    0
'obs5'    0
'obs6'    1

cell array: 4×1 cell array

    'obs2'
    'obs3'
    'obs4'
    'obs6'

I want to get a dataset that contains only the lines present in xyz array.

    'ObsNames' y
    'obs2'    0
    'obs3'    0
    'obs4'    0
    'obs6'    1

thank you

 采纳的回答

Okay, I've never worked with datasets but they are quite similar to tables.
%%Load data
d1=load('xyz.mat');
d2=load('abc.mat');
%%Extract cell array with xyz names
xyzNames=d1.ObsNames_ds_ACP_selected_vars
%%Extract cell array with abc names and values
abc=d2.ds_ACP_selected_vars
abcNames=abs.Properties.ObsNames
abcValues=abc.Classvar;
%%Compare
[~,b]=intersect(abcNames,xyzNames)
%%Names
abcNames(b)
ans =
4×1 cell array
{'CCImpOpA' }
{'ProdottiAccesiMens'}
{'ProdottiInEssere' }
{'classe_eta' }
%%corresponding values
abcValues(b)
ans =
0
0
0
1

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Matrices and Arrays 的更多信息

产品

版本

R2016b

标签

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by