Table Find/Replace based on condition (greater than)

6 views (last 30 days)
Morning, In a table, how can I find values greater than 1 and replace them with NaN?
I know about the ismissing family but it does not allow (I think) for a condition (greater than), only for specific number/text.
T = table([0.1;0.2],[7;0.5],'VariableNames',{'varx1','varx2'})
The entry "7" should be NaN

Accepted Answer

Image Analyst
Image Analyst on 23 Nov 2019
Try this:
T = table([0.1;0.2],[7;0.5],'VariableNames',{'varx1','varx2'})
rowsToChange = T.varx1 > 1
if ~isempty(rowsToChange)
T.varx1(rowsToChange) = nan
end
rowsToChange = T.varx2 > 1
if ~isempty(rowsToChange)
T.varx2(rowsToChange) = nan
end
  3 Comments
Image Analyst
Image Analyst on 23 Nov 2019
Edited: Image Analyst on 8 Jul 2021
What are "w conditionals"?
It is vectorized by column.
The reason I did it by columns is that some columns (not in this case though) might not be numeric, in general. So you can't just convert the whole table to a numerical array, then do the whole matrix vectorized at once, then convert back to a table, unless you know what column numbers are numeric.
Giuseppe Degan Di Dieco
Giuseppe Degan Di Dieco on 7 Jul 2021
Dear Image Analyst,
thanks for your tip, easy and straight.
Best.

Sign in to comment.

More Answers (0)

Categories

Find more on Numeric Types in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!