Hi!
How can I create timetable that only groups the information from the following timetable by day?
timeStamps = datetime([2017 3 4; 2017 3 5; 2017 3 4; 2017 3 5; 2017 3 4; 2017 3 5; 2017 3 4; 2017 3 5]);
hour = [8 8 8 8 9 9 9 9]';
Volume = [5 10 15 20 25 30 35 40]';
Price= [40 35 30 25 20 15 10 5]';
T= table(timeStamps, hour, Volume, Price)
TT= table2timetable(T)
This is just an example, my real timetable is composed of several days, perhaps with a for loop?

 Akzeptierte Antwort

Star Strider
Star Strider am 31 Mär. 2020

0 Stimmen

I am not certain what you intend by ‘groups’.
One option is to use the retime function:
TTRT = retime(TT, 'daily','mean')
producing:
TTRT =
2×3 timetable
timeStamps hour Volume Price
___________ ____ ______ _____
04-Mar-2017 8.5 20 25
05-Mar-2017 8.5 25 20

6 Kommentare

Angelavtc
Angelavtc am 31 Mär. 2020
Thank you @star Strider, what I want is to divide my table by days, to create daily subtables. I dont need to do any other calculation (like the mean). I want to have a fast way of doing it as I have a dataset composed by several years, months, and of course, a lot of repeated daily observations to group. So for this small example, I will need to create 2 subtables (one for 04-Mar-2017 and the other for 05-Mar-2017) with their corresponding hour, Price and Volume observations. Thanks in advance!
Steven Lord
Steven Lord am 31 Mär. 2020
Index into your timetable using a timerange.
tr = timerange(datetime('today'), 'day')
Star Strider
Star Strider am 31 Mär. 2020
To create separate tables from ‘TT’:
G = findgroups(TT.timeStamps);
TTS = accumarray(G, (1:size(TT,1)).', [], @(x){TT(x,:)});
producing:
TTS_1 = TTS{1}
TTS_1 =
4×3 timetable
timeStamps hour Volume Price
___________ ____ ______ _____
04-Mar-2017 8 5 40
04-Mar-2017 8 15 30
04-Mar-2017 9 25 20
04-Mar-2017 9 35 10
Angelavtc
Angelavtc am 31 Mär. 2020
woow @Star Strider, this works perfect! Amazing! Merci!
Angelavtc
Angelavtc am 31 Mär. 2020
@Star Strider but how can I do a loop so it creates the daily subtimetables from one command. For example here, something like:
for i=1:length(TTS);
TTS_i=TTS{i};
end
Star Strider
Star Strider am 31 Mär. 2020
As always, my pleasure!
My code creates them automatically. Use the addressing I used to see and use each one.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Community Treasure Hunt

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

Start Hunting!

Translated by