Wouter Johns
Wouter Johns

Reputation: 19

join columns of arrays in matlab

I have the following inputs

I want to join/merge (add) the 3th column of dataset 1 to a new 4th array column of dataset 2 for the elements for which the ID is the same (same value in column 1 of dataset 1 and column 1 of dataset 2). Mathematically you can write it like this I think:

dataset2(i,4)=dataset1(find(dataset1(:,1)==c(i,1)),3);

but how to put it in MATLAB?

None of the methods mentioned in the MATLAB help function or elsewhere on the internet seem to work. I have already tried merge, join, ismember, vectors, but I can't solve the problem.

Does someone have any ideas? I know the problem can be solved with for loops, but i'm not allowed to use them, so I am searching for alternatives.

Upvotes: 0

Views: 153

Answers (1)

andrew
andrew

Reputation: 2469

I believe this is what you want

%We keep the index of all the matching rows
%NOTICE: I changed c(i,1) to dataset2(:,1)
%matches_in_col_1 = find(dataset1(:,1)==dataset2(:,1)); 

%EDIT: HOW TO COMPARE MORE THAN 2 COLUMNS
%if you want to find matches in 4 datasets just use this
matches_in_col_1 = find(dataset1(:,1)==dataset2(:,1)==dataset3(:,1)==dataset4(:,1)); 

%now copy the values from those rows into the corresponding row
%of datsaset2 
dataset2(matches_in_col_1,4) = dataset1(matches_in_col_1,3);

I'm not 100% sure. Why is i present? were you trying a loop implementation? My solution also assumes that c was supposed to be dataset2

Upvotes: 1

Related Questions