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

 Réponse acceptée

jonas
jonas le 1 Oct 2018
Modifié(e) : jonas le 1 Oct 2018
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

Plus de réponses (0)

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Produits

Version

R2016b

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by