Weekly retime grouping by ID on large dataset

8 visualizaciones (últimos 30 días)
Gian23
Gian23 el 24 de Sept. de 2021
Comentada: Gian23 el 15 de Oct. de 2021
Hello everyone,
I'm going to calculate the weekly average of daily temperatures and pressure grouping by sensor using retime function. At the moment I'm trying to select each sensor with a loop and then apply the retime function, but I have to calculate nine million rows so I would like to avoid a loop to speed up the calculation
I give an example of input table:
MeasurementTime = datetime({'2015-11-11';'2015-11-12';'2015-11-23';'2015-11-23';'2015-12-04';'2015-12-08';'2015-12-10';'2015-12-11';'2015-12-12'});
Temp = [36.3;38.1;39.3;37.3;39.1;42.3;36.3;38.1;39.3];
Pressure = [29.9;29.1;29.3;30.4;30.3;29.9;30.1;30.6;29.6;];
Sensor = [121;121;143;143;121;143;121;143;143];
SensorState = ["T"; "T"; "T"; "T"; "W"; "T"; "T"; "W"; "W"];
TT = timetable(MeasurementTime,Sensor,SensorState,Temp,Pressure);
I give an example of output table:
MeasurementTime Temp Pressure Sensor SensorState
_______________ ____ ________ ______ ___________
08-Nov-2015 37.2 29.5 "121" "T"
15-Nov-2015 NaN NaN "121" "T"
22-Nov-2015 NaN NaN "121" "T"
22-Nov-2015 38.3 29.85 "143" "T"
29-Nov-2015 NaN NaN "121" "T"
29-Nov-2015 NaN NaN "143" "T"
29-Nov-2015 39.1 30.3 "121" "W"
06-Dec-2015 36.3 30.1 "121" "T"
06-Dec-2015 42.3 29.9 "143" "T"
06-Dec-2015 38.7 30.1 "143" "W"
Thanks in advance!

Respuesta aceptada

Cris LaPierre
Cris LaPierre el 24 de Sept. de 2021
Editada: Cris LaPierre el 24 de Sept. de 2021
Look into groupsummary. You can group by multiple variables.
% groupsummary
MeasurementTime = datetime({'2015-11-11';'2015-11-12';'2015-11-23';'2015-11-23';'2015-12-04';'2015-12-08';'2015-12-10';'2015-12-11';'2015-12-12'});
Temp = [36.3;38.1;39.3;37.3;39.1;42.3;36.3;38.1;39.3];
Pressure = [29.9;29.1;29.3;30.4;30.3;29.9;30.1;30.6;29.6;];
Sensor = [121;121;143;143;121;143;121;143;143];
SensorState = ["T"; "T"; "T"; "T"; "W"; "T"; "T"; "W"; "W"];
TT = timetable(MeasurementTime,Sensor,SensorState,Temp,Pressure);
wklyAvg = groupsummary(TT,["Sensor","MeasurementTime"],["none","week"],'mean',["Temp","Pressure"], 'IncludeMissingGroups',true,'IncludeEmptyGroups',true)
wklyAvg = 10×5 table
Sensor week_MeasurementTime GroupCount mean_Temp mean_Pressure ______ __________________________ __________ _________ _____________ 121 [08-Nov-2015, 15-Nov-2015) 2 37.2 29.5 121 [15-Nov-2015, 22-Nov-2015) 0 NaN NaN 121 [22-Nov-2015, 29-Nov-2015) 0 NaN NaN 121 [29-Nov-2015, 06-Dec-2015) 1 39.1 30.3 121 [06-Dec-2015, 13-Dec-2015) 1 36.3 30.1 143 [08-Nov-2015, 15-Nov-2015) 0 NaN NaN 143 [15-Nov-2015, 22-Nov-2015) 0 NaN NaN 143 [22-Nov-2015, 29-Nov-2015) 2 38.3 29.85 143 [29-Nov-2015, 06-Dec-2015) 0 NaN NaN 143 [06-Dec-2015, 13-Dec-2015) 3 39.9 30.033
  1 comentario
Gian23
Gian23 el 15 de Oct. de 2021
Hi Cris, sorry for the delay in my answer. I tried your solution and run very fast. Thank you.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Modify Image Colors en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by