我有一个像这样的循环,它试图将所有excel文件组合在一起。但我的一些表是空的,只有标题但没有值。我想在这些空表中插入NA,以便在最终的摘要文件中正确组合它们。我该怎么做?
DataCC = dir('*-CC.xls');
namelist1={DataCC.name};
PlateNameCC=regexprep(namelist1,'-CC.xls','');
MeanAreaCC=[];
MeanGreyCC=[];
ColonyNumCC=[];
for w = 1: numel(DataCC)
basefilenamedata=DataCC(w).name;
T=readtable(basefilenamedata);
if T.Area=[]
MeanAreaCC =NA;
MeanGreyCC=NA;
MeanGreyCC=NA;
ColonyNumCC=NA;
else
MeanAreaCC = [MeanAreaCC mean(T.Area)];
MeanGreyCC = [MeanGreyCC mean(T.MeanGrey)];
ColonyNumCC = [ColonyNumCC max(T.ColonyNum)];
end
end
空的excel文件如下所示:
答案 0 :(得分:0)
我解决了两个方面:
替换下面的代码部分:
if isempty(T.alpha)
MeanAreaCC =NaN;
MeanGreyCC=NaN;
MeanGreyCC=NaN;
ColonyNumCC=NaN;
这是一个简单的错误,=[]
是一项任务,而非比较。比较==
对结构不利。请注意,它也是NaN
,而不是NA
。
我实际上使用了Matlab导入数据/并生成脚本来执行此操作。
%%Import the data
[~, ~, raw] = xlsread('E:\Matlabfiles\GaN_ZnO\Abs_test\test.xlsx','Sheet1','A2:C20');
raw(cellfun(@(x) ~isempty(x) && isnumeric(x) && isnan(x),raw)) = {''};
%%Replace non-numeric cells with NaN
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric cells
raw(R) = {NaN}; % Replace non-numeric cells
%edit data
data = reshape([raw{:}],size(raw));
%% Create table
test = table;
%% Allocate imported array to column variable names
test.alpha = data(:,1);
test.beta = data(:,2);
test.gama = data(:,3);
%%Clear temporary variables
clearvars raw R;
但是,要在不在数字之间且没有额外值的单元格中创建NaN
,您需要在'E:\myfiles\test.xlsx','Sheet1','A2:C20'
在这种情况下,我有第二行之后的数据,超过三行。正如我在下面所示。
以防万一,test
是表格,data
是数字矩阵。然而,图片的名称错误。