MATLAB Answers

Set negative values to zero in just one column of tables in 1 x 71 cell

7 views (last 30 days)
BN2 on 29 Jan 2020
Answered: Allen on 29 Jan 2020
I have 1 x 71 cell arrays that contain 71 tables. I want to set all negative values in the rrr24 column of all tables into zero. I tried some ways but always I get various errors:
first try:
headers = {'rrr24'};
for i = 1:numel(C)
colIdx = ismember(C{i}.Properties.VariableNames, headers);
C{i}(:,colIdx)< 0 = 0
Second try:
headers = {'rrr24'};
index=find(C.Properties.VariableNames, headers <0);
Any advice is appreciated.
Thank You

Accepted Answer

Allen on 29 Jan 2020
Assuming that each table contains a variable name of 'rrr24', then the following should work.
for i=1:length(C)
C{i}{C{i}{:,'rrr24'}<0,'rrr24'} = 0;
If it is possible that 'rrr24' is not a variable name for one or more of the tables, then you can add an if-statement to check for its existance first.
for i=1:length(C)
if any(contains(C{i}.Properties.VariableNames,'rrr24'))
C{i}{C{i}{:,'rrr24'}<0,'rrr24'} = 0;

More Answers (0)


Community Treasure Hunt

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

Start Hunting!