Azzera filtri
Azzera filtri

How to select specific time frames from data?

9 visualizzazioni (ultimi 30 giorni)
I need to isolate the data between 7am-9am and 8pm-12am from a large set of 24-hour data that runs over a year. I'm not sure how to do this though because the first column, which contains the time data is structured as yyyy/mm/dd hh:mm:ss. Please see attached data. Could someone please help me on this? Currently in R2018a
  1 Commento
Walter Roberson
Walter Roberson il 10 Ott 2018
An extract of the file format would help people who are working on their phone instead of a desktop....

Accedi per commentare.

Risposta accettata

Guillaume
Guillaume il 10 Ott 2018
pickups = readtable('uber.csv');
pickuphours =hour(pickups.pickup_datetime);
filteredpickups = pickups(pickuphours >= 7 & pickuphours < 9 | pickuphours >= 20, :)
An alternative to that last line would be:
filteredpickups = pickups(ismember(pickuphours, [7 8 20 21 22 23]), :)

Più risposte (1)

Raúl GB
Raúl GB il 10 Ott 2018
You need to use the hour function if you are interested in a specified interval. You can do something like this to obtain the intervals, after loading the file properly:
[Interval1] = find(hour(pickup_datetime)>7 & hour(pickup_datetime)<9);
[Interval2] = find(hour(pickup_datetime)>20 & hour(pickup_datetime)<24);
Interval = [Interval1;Interval2];
Hope it helps.
  1 Commento
Guillaume
Guillaume il 10 Ott 2018
Usually, find is completely unecessary and just slows things done. You could do:
interval1 = hour(pickup_datetime)>7 & hour(pickup_datetime)<9;
interval2 = hour(pickup_datetime)>20 & hour(pickup_datetime)<24;
interval = interval1 | interval2;
Note that hour(xxx)<24 is always going to be true. I'm also certain that 7 and 20 needs to be included in the set (so >= instead of >)

Accedi per commentare.

Categorie

Scopri di più su Install Products in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by