Replace NaN's in timeseries with longterm median for specific dates
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Elin Jacobs
el 24 de Feb. de 2023
Comentada: Elin Jacobs
el 24 de Feb. de 2023
I have a multiyear timeseries with an hourly timestep that contains NaN's. I want to replace the NaN's with the median value for the specific hour, day and month calculated over all years. In the example below, I want to take the calculated median value in G and insert it into any matching hour with missing data in X. I have played around with ismember and vaious timetable options, but am stuck. Help appreciated!
% date range
t1 = datetime(2015,1,1,1,0,0);
t2 = datetime(2020,12,31,23,0,0);
t = (t1 : hours(1) : t2)';
%make up some data with random NaN's
X = rand(size(t));
idx = randsample(size(X,1),size(X,1)/3) ;
X(idx,:) = NaN;
%convert to timetable
T = timetable(t,X);
T.Month = month(T.t,'monthofyear');
T.Day = day(T.t,'dayofmonth');
T.Time = timeofday(T.t);
%calculate the median value of each hour in a year
G = groupsummary(T,{'Month','Day','Time'},'median','X');
%Where there are NaN's in X, insert the median value from G at the matching
%Month, Day and Time in each year
0 comentarios
Respuesta aceptada
Luca Ferro
el 24 de Feb. de 2023
Try to see if this helps, it's conceptually the same thing but with the mean
Más respuestas (0)
Ver también
Categorías
Más información sobre Timetables en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!