Ordering the name of excel files from short to longer length
    7 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Adi Purwandana
 il 12 Set 2023
  
    
    
    
    
    Commentato: Adi Purwandana
 il 12 Set 2023
            Hello everyone,
I have a script which split an excel file into several excel files using this code: 
data = readtable('dataset.xlsx');
stations = unique(data.Station);
for i=1:numel(stations)
    x = data(data.Station==stations(i), :);
    writetable(x,"Sta_"+num2str(stations(i))+".xlsx");
end
FYI, each file created using such code has different lengths. For example:
Sta_1 --> 8 rows; 
Sta_2 --> 3 rows;
Sta_3 --> 6 rows. 
My question is... is it possible to order from the shorter length to longer length when using writable function?
So, I want the file names is ordered based on the length of the file, i.e., 
Sta_1 --> file with 3 rows; 
Sta_2 --> file with 6 rows;
Sta_3 --> file with 8 rows.
Thanks
0 Commenti
Risposta accettata
  kei hin
      
 il 12 Set 2023
        
      Modificato: kei hin
      
 il 12 Set 2023
  
      Check the length  inside the for loop and store the sorted result in variables, then use the writetable outside the for loop.
3 Commenti
  kei hin
      
 il 12 Set 2023
				code like this. It may not be exactly what you need.
data = readtable('dataset.xlsx');
stations = unique(data.Station);
tmp = {};
for i=1:numel(stations)
    x = data(data.Station==stations(i), :);
    if isempty(x)
        continue; %empty skip
    end
    tmp{end+1,1} = x;
    [row,col] = size(x);
    tmp{end,2} = row; % length, for sort
end
result = sortrows(tmp,2); % sort by length
for i=1:length(result)
    writetable(result{i,1},"Sta_"+num2str(stations(i))+".xlsx");
end
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Spreadsheets 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!
