How can we find the non common strings from multiple columns
7 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Dear all,
I want to compare the following three columns of strings (of different length) and find the entries that are NOT common across them. Just to mention that my real vectors (listA,listB,listC, etc) are of large size.
listA={'India'
'Iran'
'Ireland'
'Israel'
'Jordan'
'Kuwait'
'Lebanon'
'Lesotho'
'Libya'
'Luxembourg'
'Malawi'
'Maldives'
'Morocco'
'Nepal'
'Netherlands'
'Norway'
'Oman'
'Paraguay'
'Peru'
'Philippines'
}; listB={ 'Denmark'
'El Salvador'
'Gabon'
'Gambia'
'Lebanon'
'Lesotho'
'Libya'
'Luxembourg'
'Malawi'
'Maldives'
'Morocco'
'Nepal'
'Netherlands'
'Norway'
'Oman'
'Paraguay'
'Peru'
'Philippines'
'Qatar'
'Rwanda'
'Saudi Arabia'
'Senegal'
'Singapore'
'Sudan'}; listC= {'Kuwait'
'Lebanon'
'Lesotho'
'Nepal'
'Netherlands'
'Oman'
'Sweden'
'Syria'
'Tanzania'
'Turkey'
'Uruguay'};
Risposta accettata
Stephen23
il 13 Mar 2017
Modificato: Stephen23
il 13 Mar 2017
First lets find the strings that are common to all cell arrays:
listA={'India','Iran','Ireland','Israel','Jordan','Kuwait','Lebanon','Lesotho','Libya','Luxembourg','Malawi','Maldives','Morocco','Nepal','Netherlands','Norway','Oman','Paraguay','Peru','Philippines',};
listB={'Denmark','El Salvador','Gabon','Gambia','Lebanon','Lesotho','Libya','Luxembourg','Malawi','Maldives','Morocco','Nepal','Netherlands','Norway','Oman','Paraguay','Peru','Philippines','Qatar','Rwanda','Saudi Arabia','Senegal','Singapore','Sudan'};
listC={'Kuwait','Lebanon','Lesotho','Nepal','Netherlands','Oman','Sweden','Syria','Tanzania','Turkey','Uruguay'};
%
lists = {listA,listB,listC}; % storing data together makes working with them much simpler.
%
exc = lists{1};
for k = 2:numel(lists)
exc = intersect(exc,lists{k});
end
giving the strings found in all cell arrays as:
exc =
'Lebanon'
'Lesotho'
'Nepal'
'Netherlands'
'Oman'
Now we can easily get the input cell arrays with the strings from exc removed:
out = cell(size(lists));
for k = 1:numel(lists)
out{k} = setdiff(lists{k},exc);
end
giving:
>> out{:}
ans =
'India' 'Iran' 'Ireland' 'Israel' 'Jordan' 'Kuwait' 'Libya' 'Luxembourg' 'Malawi' 'Maldives' 'Morocco' 'Norway' 'Paraguay' 'Peru' 'Philippines'
ans =
'Denmark' 'El Salvador' 'Gabon' 'Gambia' 'Libya' 'Luxembourg' 'Malawi' 'Maldives' 'Morocco' 'Norway' 'Paraguay' 'Peru' 'Philippines' 'Qatar' 'Rwanda' 'Saudi Arabia' 'Senegal' 'Singapore' 'Sudan'
ans =
'Kuwait' 'Sweden' 'Syria' 'Tanzania' 'Turkey' 'Uruguay'
And if you want a list of all strings together, excluding those in exc:
uni = {};
for k = 1:numel(lists)
uni = union(uni,lists{k});
end
uni = setdiff(uni,exc)
gives:
uni =
'Denmark' 'El Salvador' 'Gabon' 'Gambia' 'India' 'Iran' 'Ireland' 'Israel' 'Jordan' 'Kuwait' 'Libya' 'Luxembourg' 'Malawi' 'Maldives' 'Morocco' 'Norway' 'Paraguay' 'Peru' 'Philippines' 'Qatar' 'Rwanda' 'Saudi Arabia' 'Senegal' 'Singapore' 'Sudan' 'Sweden' 'Syria' 'Tanzania' 'Turkey' 'Uruguay'
Più risposte (1)
Vedere anche
Categorie
Scopri di più su Modulation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!