RECCELL is a cell array with 8 columns and 30000 rows:
C1 C2 C3 C4 C5 C6 C7 C8'AA' 1997 19970102 1 'BACHE' 'MORI' 148 127'AA' 1997 19970108 2 'MORGAN' [] 1595 0'AA' 1997 19970224 3 'KEMSEC' 'FATHI' 1315 297
CONCELL is a cell array with 4 columns and 70000 rows:
C1 C2 D3 D4'AA' 1997 19970116 2,75'AA' 1997 19970220 2,71'AA' 1997 19970320 2,61
I would like to add to RECCELL the 4 columns of CONCELL only in case the C1s match and C3 and D3 (both dates) are the closest possible. For instance I would get in this example:
C1 C2 C3 C4 C5 C6 C7 C8 C1 C2 D3 D4 'AA' 1997 19970102 1 'BACHE' 'MORI' 148 127 'AA' 1997 19970116 2,75'AA' 1997 19970108 2 'MORGAN' [] 1595 0 'AA' 1997 19970116 2,75'AA' 1997 19970113 3 'KEMSEC' 'FATHI' 1315 297 'AA' 1997 19970220 2,71
- To the first row of RECCELL corresponds the first row of CONCELL.
- To the second row of RECCELL corresponds the first row of CONCELL.
- To the third row of RECCELL corresponds the second row of CONCELL.
The code I have so far is:
[~, indCon, indREC] = intersect(CONCELL(:,1), RECCELL(:,1));REC_CON=[RECCELL(indREC,:),CONCELL(indCon,:)];NO_REC_CON= RECCELL(setdiff(1:size(RECCELL,1), indREC),:);
It's wrong because I cannot use intersect for a string element and because I am not considering the second condition, which is to choose the closest dates.
Can someone help me? Thank you
Best Answer