Join tables using all rows of a column and fulling with zeros when not found a value
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Montserrat Vallcorba Martí
am 27 Okt. 2017
Kommentiert: Montserrat Vallcorba Martí
am 27 Okt. 2017
I have two tables, for example:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/168847/image.jpeg)
And I want to join the tables having all values of 'Ind' and 'Date' for each 'Code', fulling with zero when it doesn't find a value:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/168849/image.jpeg)
How can I do this?
Thank you!
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 27 Okt. 2017
Bearbeitet: Andrei Bobrov
am 27 Okt. 2017
T1 = readtable('20171027.xls','Range','A2:B14');
T2 = readtable('20171027.xls','Range','A16:D31');
T1.Date = datetime(T1.Date);
T2.Date = datetime(T2.Date);
[g,v] = findgroups(T2.Code);
n = max(g);
T3 = repmat(T1,n,1);
T3.Code = v(kron((1:n)',ones(size(T1,1),1)));
T3 = T3(:,[3,1:2]);
[lo,ii] = ismember(T3,T2(:,1:3));
T3.Value = zeros(size(T3,1),1);
T3.Value(lo) = T2.Value(ii(lo));
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu String Parsing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!