How do I reshape a raw data matrix?
Mostrar comentarios más antiguos
Hi,
I have the following problem and I am struggling to find out a solution.
- I have a MATLAB table that comes from a database and looks like this:
| Id | update_time | station_id | status | slots | bikes
00:00 1 25
00:00 2 15
. . .
. . .
00:00 428 19
00:01 1 27
00:01 2 18
. . .
. . .
00:01 428 14
So, the data is collected each minute for 428 stations (station_id) until 23:59 (one day of data).
I would like to reshape this matrix into one that has the Update_time in column "zero" and then it has 428 more columns being Column 1 = station_id 1, column 2 = station_id 2, ..., Column 428 = station_id 428. Then, the matrix must be filled in with the "SOLTS". It should look like:
| 1 | 2 | . . . . . | 428 |
00:00 25 15 19
00:01 27 18 14
.
.
23:59 12 15 0
How should I do that?
Thanks,
Oriol
2 comentarios
Walter Roberson
el 21 de Abr. de 2016
Is this for the purpose of displaying to the command window, or is it for the purpose of writing to a file, or is it for the purpose of displaying in a GUI, or is it for the purpose of creating a spreadsheet, or is it necessary to have a data structure that is accessible as a table?
manxino8
el 21 de Abr. de 2016
Respuesta aceptada
Más respuestas (1)
Andrei Bobrov
el 21 de Abr. de 2016
Editada: Andrei Bobrov
el 21 de Abr. de 2016
f = fopen('20160421.txt');
c = textscan(f,'%s %f %f');
fclose(f);
[c0,~,c1] = unique(c{1});
out = [{nan},num2cell(1:428);c0,num2cell(accumarray([c1,c{2}],c{3}))];
if you had data 'slots' for each minites from array 00:00 - 00:59, then
[c0,~,c1] = unique(c{1});
out = [{nan},num2cell(1:428);c0,num2cell(reshape(c{3},numel(c0),[]))];
3 comentarios
manxino8
el 21 de Abr. de 2016
Andrei Bobrov
el 21 de Abr. de 2016
Please attach mat file with your matrix and look at the Guillaume answer.
manxino8
el 21 de Abr. de 2016
Categorías
Más información sobre Database Toolbox en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!