我试图运行一个for循环,在这个循环中,我试图提取一个表,在循环的每次迭代中。
目前我可以写一个表,如果我单步执行代码,我可以手动保存创建的表,然后再运行一次,它会被覆盖。我所需要的是,能够提取表并重命名它,然后在下一次循环中被覆盖。
我目前有以下代码:
clc
clear all
%% Parameters
data = readtable('Input/Wales_Interim_23/Pembrokeshire_23_Finished.csv');
data.Unit = extractBefore( data.Reg_ID, '_' ); %Extract the unit number prior to the
transect line.
gidx = findgroups( data.Unit ); %Identify the individual unit groups.
N = max(gidx); % gidx is [1,2,...,N] for N unique IDs.
units = cell(N,1); % pre-allocate an output cell.
% Loop over the IDs and assign the subsets of data.
for ii = 1:N
units{ii} = data( gidx==ii, : );
writetable(units{ii});
end
%Find the outputted tables in 'Units'.
这段代码基本上是通过一个CSV文件运行的,识别列表中的唯一组,然后将这些组分配给一个单元格数组。我不确定我需要在循环中的哪里放置一个“write table”函数,以及如何让脚本为每个唯一组导出一个表。
2条答案
按热度按时间qco9c6ql1#
在对
sprintf
的调用中,可以包含索引的格式化运算符:这将为每个文件提供唯一的名称,并防止其被覆盖。
gxwragnw2#
设法通过在循环开始时定义“unit_name”,然后在“writetable”函数的输出中使用此名称来对问题进行排序。