Elapsed Time for specific month

5 visualizzazioni (ultimi 30 giorni)
Seemab  Janjua
Seemab Janjua il 25 Nov 2015
Commentato: Seemab Janjua il 25 Nov 2015
i have dataset as follow 1976/1/30 20:45:48.81 1976/2/2 3:58:35.29 1976/2/3 10:3:31.11 1976/2/3 13:14:40.79 1976/2/6 16:24:49.9 1976/2/16 10:9:0 1976/3/16 10:9:36.8 1976/3/23 3:34:1.2 1976/3/26 5:12:39.4 1976/4/26 11:19:0 1976/4/26 11:19:26.77 1976/5/26 21:50:20 1976/5/2 5:1:14.5 1976/5/3 18:25:0 1976/6/3 18:25:17.25 1976/7/12 23:28:0 1976/7/12 23:28:20.7 1976/7/14 4:10:20 1976/7/19 14:14:8.12 1976/7/20 18:53:1.2 1976/7/22 20:52:0 1976/7/22 20:52:51.92 1976/7/23 15:58:18.92 1976/7/24 17:58:0 1976/8/24 17:58:39.35 1976/8/25 6:33:31.49 i want to group the data monthly.after that i want to find elapsed time of specific month, first time and last time... the data is from 1976 to 2013...

Risposta accettata

Peter Perkins
Peter Perkins il 25 Nov 2015
Better in the future to attach a properly-formatted file.
Here's a solution, using a table, datetimes, and splitapply. The result is a duration in units of days:hours: minutes:seconds.
>> dstr = { ...
'1976/1/30 20:45:48.81'
'1976/2/2 3:58:35.29'
'1976/2/3 10:3:31.11'
'1976/2/3 13:14:40.79'
'1976/2/6 16:24:49.9'
'1976/2/16 10:9:0.0'
'1976/3/16 10:9:36.8'
'1976/3/23 3:34:1.2'
'1976/3/26 5:12:39.4'
'1976/4/26 11:19:0.0'
'1976/4/26 11:19:26.77'
'1976/5/26 21:50:20.0'
'1976/5/2 5:1:14.5'
'1976/5/3 18:25:0.0'
'1976/6/3 18:25:17.25'
'1976/7/12 23:28:0.0'
'1976/7/12 23:28:20.7'
'1976/7/14 4:10:20.0'
'1976/7/19 14:14:8.12'
'1976/7/20 18:53:1.2'
'1976/7/22 20:52:0.0'
'1976/7/22 20:52:51.92'
'1976/7/23 15:58:18.92'
'1976/7/24 17:58:0.0'
'1976/8/24 17:58:39.35'
'1976/8/25 6:33:31.49'};
>> timestamp = datetime(dstr,'InputFormat','uuuu/M/d H:m:s.SS');
>> timestamp.Format = 'uuuu/MM/dd HH:mm:ss.SS';
>> t = table;
>> [g,t.Year,t.Month] = findgroups(timestamp.Year,timestamp.Month);
>> t.Min = splitapply(@min,timestamp,g);
>> t.Max = splitapply(@max,timestamp,g);
>> t.Elapsed = t.Max - t.Min;
>> t.Elapsed.Format = 'dd:hh:mm:ss'
Year Month Min Max Elapsed
____ _____ ______________________ ______________________ ____________
1976 1 1976/01/30 20:45:48.81 1976/01/30 20:45:48.81 00:00:00
1976 2 1976/02/02 03:58:35.29 1976/02/16 10:09:00.00 14:06:10:24
1976 3 1976/03/16 10:09:36.80 1976/03/26 05:12:39.40 09:19:03:02
1976 4 1976/04/26 11:19:00.00 1976/04/26 11:19:26.77 00:00:26
1976 5 1976/05/02 05:01:14.50 1976/05/26 21:50:20.00 24:16:49:05
1976 6 1976/06/03 18:25:17.25 1976/06/03 18:25:17.25 00:00:00
1976 7 1976/07/12 23:28:00.00 1976/07/24 17:58:00.00 11:18:30:00
1976 8 1976/08/24 17:58:39.35 1976/08/25 06:33:31.49 12:34:52
Had to add ".0" to the strings that had no fractional seconds part.

Più risposte (0)

Categorie

Scopri di più su Dates and Time in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by