How to use function table (or timetable) inside a loop to generate a final table that contains a large number of variables (columns) with names

5 visualizaciones (últimos 30 días)
Wondering if anyone could suggest how to use the function table (or timetable) inside a loop to generate a final table that contains a large number of variables (columns) with names?
%This is my wrong attempt...
T = array2table(DATA);
%DATA is an array with 1st column (sorted dates), following 300 columns (data, double), and over 100.000 rows.
for kk=1:size(DATA,2)
name={num2str(file_name_list{kk})}; % Generate individual names to add to next step
T =[T; array2table(DATA,'VariableNames', {name})]; % Trying to add new names to columns...
end
%... to get something like
Time VarName1 VarName2 ... VarName300
'20-Sep-2001 00:00:00' 10 2.5 ... NaN
'20-Sep-2001 01:00:00' NaN 0.34 ... 12
'20-Sep-2001 02:00:00' 0.1 NaN ... 0.4
... ... ... ... ...
Thanks!

Respuesta aceptada

Peter Perkins
Peter Perkins el 8 de Mzo. de 2017
I'm not sure what is actually in the array DATA. I may have missed that in your description. It sounds like it might be a numeric array with datenums in column 1 and numbers in columns 2:300 (or 2:301?). And then file_list is a 1x300 (1x301?) cell array of char vectors like 'AGR_OCEAN_001'.
So maybe
tt = array2timetable(DATA(2:300), ...
'RowTimes',datetime(Data,'ConvertFrom','datenum'), ...
'VariableNames',file_list)
No loop needed. But I think we're gonna need to see a real, small example of what you have.
  3 comentarios
Robert
Robert el 8 de Mzo. de 2017
That works great! Thank you to all of you for make time to help people like me to learn and advance in Matlab world. Very appreciated!

Iniciar sesión para comentar.

Más respuestas (1)

Walter Roberson
Walter Roberson el 7 de Mzo. de 2017
Almost!
T =[T, array2table(DATA,'VariableNames', {name})]; % Trying to add new names to columns...
This changes the ";" to ","
For example,
T = array2table(randi(6,5,2))
T = [T,array2table(randi(10,5,7), 'VariableNames', {'A1','A2','A3','A4','A5','A6','A7'})]
  5 comentarios
Walter Roberson
Walter Roberson el 8 de Mzo. de 2017
My guess:
T = array2table(DATA(:,1));
%This now create a Table with one column, which has the dates
for kk = 2 : size(DATA,2)
name_cell = file_list(kk);
% Generate individual names to add to next step
T = [T, array2table(DATA(:,kk),'VariableNames', name_cell)];
end
However, if you were going to do that, then just
T = array2table(DATA, 'VariableNames', file_list);
with no loop.

Iniciar sesión para comentar.

Categorías

Más información sobre Data Type Conversion en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by