# Compare two columns having different values.

4 views (last 30 days)
MakM on 28 Mar 2022
Answered: MJFcoNaN on 1 Apr 2022
I have 2 variables A and B, I want to compare the values with each other and want result like variable C. Is there any direct function I can use to get C?
A={'a','b','c','d','e'}
B={'b','c','d','e','f'}
C={'a',-
'b','b'
'c','c'
'd','d'
'e','e'
-.'f'}

Arif Hoq on 28 Mar 2022
try this:
A={'a','b','c','d','e'};
B={'b','c','d','e','f'};
C={'a','-'
'b','b'
'c','c'
'd','d'
'e','e'
'-.','f'};
a=[A(2:end) B(1:end-1)]';
b=[[A(1) '-'];reshape(a,[],2)];
out=[b;['-.' B(end)]]
out = 6×2 cell array
{'a' } {'-'} {'b' } {'b'} {'c' } {'c'} {'d' } {'d'} {'e' } {'e'} {'-.'} {'f'}
MakM on 29 Mar 2022
The main idea is to compare the A and B and then get the answer, not to get the answer by hard coding.
I hope u hv understand my question :)
Arif Hoq on 29 Mar 2022
A={'a','b','c','d','e'};
B={'b','c','d','e','f'};
for i=1:length(A)
for j=1:length(B)
if any(strcmp(A(i),B(j)))==1
C(i,:)=[A(i) B(j)];
end
end
end
output=[A(1) '-';C(2:end,:);'-.' B(end)]
output = 6×2 cell array
{'a' } {'-'} {'b' } {'b'} {'c' } {'c'} {'d' } {'d'} {'e' } {'e'} {'-.'} {'f'}

MJFcoNaN on 1 Apr 2022
I will suggest the table join to do it:
tbla=table;
tblb=table;
tbla.var={'a','b','c','d','e'}';
tblb.var={'b','c','d','e','f'}';
tblc=outerjoin(tbla, tblb);
C=tblc{:,:};
C(cellfun(@isempty,C))={'-'};