Inserting missing dates and values
Mostrar comentarios más antiguos
I have two column matrix representing a time series data with daily interval. But I have few missing data so some of the dates are not shown in the matrix. But I need to insert all possible dates in the data series where the missing values should be equal to the previous day’s value. Can I do it in Matlab? For example the matrix looks like x=[Jan1 10; Jan2 12; Jan4 16] but it should be x=[Jan1 10; Jan2 12; Jan3 12; Jan4 16]. It looks very simple in this example but I have millions of data so it is not possible to correct manually. Anyone can help please?
6 comentarios
Breylla Carvalho
el 10 de Nov. de 2017
Hey everyone! I have the same problem as Mohammad. Has anyone who could help me?
Ana Soph
el 16 de Mayo de 2020
Yeah. I have the same problem
Image Analyst
el 16 de Mayo de 2020
There are two Answers offering help below. Just scroll down. If they don't work then read this link.
Ana Soph
el 18 de Mayo de 2020
sorry i don't understand the answer, i think doesn't apply to my problem
Image Analyst
el 18 de Mayo de 2020
Editada: Image Analyst
el 18 de Mayo de 2020
You said you have the same problem as Mohammad. The two answers below offered a solution so there is a chance they may work for you also. If you already read them and you say it does not apply to your problem, then evidently you do not have the same problem (kind of a contradiction). So we're now not sure if you have the same problem or not. Anyway...
If you have a different problem, read this link first, and then post your own new question with your own data attached.
Ana Soph
el 18 de Mayo de 2020
i already read the link and put my answer. Have a great day
Respuestas (2)
Steven Lord
el 10 de Nov. de 2017
Editada: Steven Lord
el 10 de Nov. de 2017
If you're using a release of MATLAB that includes timetable, create a timetable with your data then use retime on that timetable.
% Create some time and data variables
>> t = datetime(2017, 1, [1; 2; 4]);
>> x = [10; 12; 16];
% Assemble the timetable and display it
>> tt = timetable(t, x)
tt =
3×1 timetable
t x
___________ __
01-Jan-2017 10
02-Jan-2017 12
04-Jan-2017 16
% Generate daily data in your timetable, filling in new rows with
% the previous day's data
>> tt2 = retime(tt, 'daily', 'previous')
tt2 =
4×1 timetable
t x
___________ __
01-Jan-2017 10
02-Jan-2017 12
03-Jan-2017 12
04-Jan-2017 16
% Generate daily data in your timetable, but fill new rows with missing data
% For a double variable, 'missing' means NaN
>> tt3 = retime(tt, 'daily', 'fillwithmissing')
tt3 =
4×1 timetable
t x
___________ ___
01-Jan-2017 10
02-Jan-2017 12
03-Jan-2017 NaN
04-Jan-2017 16
Image Analyst
el 23 de Dic. de 2014
0 votos
I don't know what type of data x is, but convert them to a number with sprintf() and datenum(). Then use interp1() to fill in the missing dates.
5 comentarios
Mohammad Sayeed
el 25 de Mzo. de 2015
Mohammad Sayeed
el 25 de Mzo. de 2015
Image Analyst
el 25 de Mzo. de 2015
When you say "Here is ....." - exactly where is "here"?
Mohammad Sayeed
el 26 de Mzo. de 2015
Mohammad Sayeed
el 26 de Mzo. de 2015
Categorías
Más información sobre Timetables en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!