combine 2 timetables with different variables into 1 timetable?

3 views (last 30 days)
Angelavtc
Angelavtc on 19 May 2022
Commented: dpb on 21 May 2022
I have two timetables with different "time format"
I want to merge timetable 1 with timetable 2 to get timetable 3 as the following image:
Using join I get the following error: "The key variable for B must contain all values in the key variable for A."
which I guess it is because the timetable have different time format, but event if I change this, the error is still there.
Any Idea how to solve this?
Thank you in advance!
  4 Comments
Angelavtc
Angelavtc on 20 May 2022
@Dyuman Joshi For example this
d = string({'2017-01-01 11:00','2017-01-01 12:00'});
Date= datetime(d,'InputFormat','yyyy-MM-dd HH:mm')';
Price= [40 35]';
T1= table(Date, Price)
TT1= table2timetable(T1)
d1 = string({'2017-01-01','2017-01-02'});
Date= datetime(d1,'InputFormat','yyyy-MM-dd')';
Volume= [400 350]';
T2= table(Date, Volume)
TT2= table2timetable(T2)
TT1.Date = datetime(TT1.Date,'Format','yyyy-MM-dd');
TT3 = outerjoin(TT1,TT2,'MergeKeys',true);
So the result is not at all what I would like to have. I would like to end up with a timetable like this:
d2 = string({'2017-01-01 11:00','2017-01-01 12:00'});
Date= datetime(d,'InputFormat','yyyy-MM-dd HH:mm')';
Price= [40 35]';
Volume= [400 400]';
T3= table(Date, Price, Volume)
TT3= table2timetable(T3)
Thank you!

Sign in to comment.

Accepted Answer

dpb
dpb on 21 May 2022
ttC=synchronize(ttA,ttB); % catenate the two horizontally at matching times
ttC=ttC(isfinite(ttC.Price),:); % remove those w/ no Price data
ttC=retime(ttC,'hourly',"previous"); % fill in missing volume data with first value of period

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by