Find row elements of a table in another table

Hi all
A and B are two tables; I want to know if a set of values of the first row of A is contained in B; i need also the index of that row. Is it possible?
Thank you for the help
Regards

 Accepted Answer

help ismember % 'row' option
ISMEMBER True for set member. LIA = ISMEMBER(A,B) for arrays A and B returns an array of the same size as A containing true where the elements of A are in B and false otherwise. LIA = ISMEMBER(A,B,'rows') for matrices A and B with the same number of columns, returns a vector containing true where the rows of A are also rows of B and false otherwise. [LIA,LOCB] = ISMEMBER(A,B) also returns an array LOCB containing the lowest absolute index in B for each element in A which is a member of B and 0 if there is no such index. [LIA,LOCB] = ISMEMBER(A,B,'rows') also returns a vector LOCB containing the lowest absolute index in B for each row in A which is a member of B and 0 if there is no such index. The behavior of ISMEMBER has changed. This includes: - occurrence of indices in LOCB switched from highest to lowest - tighter restrictions on combinations of classes If this change in behavior has adversely affected your code, you may preserve the previous behavior with: [LIA,LOCB] = ISMEMBER(A,B,'legacy') [LIA,LOCB] = ISMEMBER(A,B,'rows','legacy') Examples: a = [9 9 8 8 7 7 7 6 6 6 5 5 4 4 2 1 1 1] b = [1 1 1 3 3 3 3 3 4 4 4 4 4 9 9 9] [lia1,locb1] = ismember(a,b) % returns lia1 = [1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1] locb1 = [14 14 0 0 0 0 0 0 0 0 0 0 9 9 0 1 1 1] [lia,locb] = ismember([1 NaN 2 3],[3 4 NaN 1]) % NaNs compare as not equal, so this returns lia = [1 0 0 1], locb = [4 0 0 1] Class support for inputs A and B, where A and B must be of the same class unless stated otherwise: - logical, char, all numeric classes (may combine with double arrays) - cell arrays of strings (may combine with char arrays) -- 'rows' option is not supported for cell arrays - objects with methods SORT (SORTROWS for the 'rows' option), EQ and NE -- including heterogeneous arrays derived from the same root class See also ISMEMBERTOL, INTERSECT, UNION, UNIQUE, UNIQUETOL, SETDIFF, SETXOR, SORT, SORTROWS. Documentation for ismember doc ismember Other functions named ismember categorical/ismember duration/ismember sym/ismember cell/ismember gpuArray/ismember tabular/ismember dataset/ismember mtree/ismember tall/ismember datetime/ismember

8 Comments

Thank you madhan, what if the two tables have different number of columns?
Illustration needed with short original data and desired.
so first row of B contains the elements (Attention: they are not necessarily in the same order as in the first row of A)
A = [1:3; 7:9];
B = [1,4,2,3; 8,9,10,7];
Yes_or_no = false(size(B, 1), 1);
for k = 1 : size(B, 1);
Yes_or_no(k) = nnz(ismember(unique(B(k, :)), unique(A(k, :)))) == size(A, 2);
end
Yes_or_no
Yes_or_no = 2x1 logical array
1 1
it gives me this error:
Error using tabular/ismember (line 37)
A and B must contain the same variables.
is it a problem to have a column of zeros in B?

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2019a

Community Treasure Hunt

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

Start Hunting!