I have 2 matrices of different sizes, one with one line per subject:
short_demo =
503 1 3 70 505 1 3 57 506 1 3 73 507 1 3 83 508 1 3 72
one with multiple lines per subject:
long =
503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 503 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 505 1 26 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 506 1 28 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 507 1 25 1 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2 508 1 30 2
if the subject ids (first column both matrices) match, then i want short_demo column 4 to fill long new column 5 as many times as the subject ids match (in this case 10, but i don't want the number hard coded).
i am having trouble with the loop structure, and how to pull the same value from short and repeat it.
i've tried:
for i=1:length(long) cur_sub_long=long(i,1); for ii=1:length(short_demo) cur_sub_short=short_demo(ii,1); if cur_sub_long==cur_sub_short long(i,5)=short_demo(ii,4) else long(i,5)=NaN; end end end
end but it isn't giving the results i'd hoped for – it just repeats this: long =
503 1 26 1 70 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72
long =
503 1 26 1 NaN 503 1 26 1 70 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72
long =
503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 70 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72
long =
503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 70 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 503 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 505 1 26 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 506 1 28 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 507 1 25 1 NaN 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72 508 1 30 2 72
this is obviously the wrong approach. any ideas?
Best Answer