Fastest way to replace NaNs by empty cells in a table
20 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hi,
I need to replace the NaNs in the columns a and b by empty cells. The code below works but it is pretty slow. Is there a faster way to do this ?
a = rand(1, 1000000)'; a(1:10000) = NaN;
b = rand(1, 1000000)'; b(1:10000) = NaN;
c = repelem({'A101'}, 1000000)';
t = table(a, b, c);
var_names = t.Properties.VariableNames;
for ii = 1:length(var_names)
if ~iscell(t.(var_names{ii}))
t.(var_names{ii}) = cellstr(num2str(t.(var_names{ii})));
idx = contains(t.(var_names{ii}), 'NaN');
t.(var_names{ii})(idx) = {''};
end
end
Thank you,
1 Commento
Adam Danz
il 30 Giu 2020
I urge you not to do this. The table variables in columns 1 and 2 are numeric and NaN values indicate missing values. To replace the NaN values with emtpy cells, all of your numeric values will have to converted to cells. That not only looks ugly but it makes the table more difficult to work with.
If you're writing the table to a file and do not want NaN values printed, there are other ways around that.
Converting the numeric values to cells just so the NaN values can appear as empty will likely cause more problems than it aesthetically solves.
Risposta accettata
Fangjun Jiang
il 25 Giu 2020
M=10;N=5;
a = rand(1, M)'; a(1:N) = NaN;
b = rand(1, M)'; b(1:N) = NaN;
c = repelem({'A101'}, M)';
t = table(a, b, c);
t.a=num2cell(t.a);
t.a(cellfun(@isnan,t.a))={''}
0 Commenti
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!