Compare two row and select appropriate data

49 views (last 30 days)
TW
TW on 10 Sep 2025
Edited: Matt J on 10 Sep 2025
I have two columns. Let's call them column a and column b.
I want to do a check where:
if row 1 of column a > row 1 of column b, use row 1 of column a. Else, use row 1 of column b.
I have tried
if Column a > Column b
Column c = column b
else
Column c = column a
end
However, when I check the data, I find out some of the function isn't working and it just pulls all the data from column a into column c.
Basically column b is the "cap." And no number in column c should be greater than that. If any numbers in column a is greater than column b, column b should be used.

Accepted Answer

TW
TW on 10 Sep 2025
The function I ultimately used was:
c=min(a,b)
Thanks @Matt J for pointing me in the right direction, though.
  2 Comments
Matt J
Matt J on 10 Sep 2025
Edited: Matt J on 10 Sep 2025
But that does not match the requirements in your question. "if row 1 of column a > row 1 of column b, use row 1 of column a"
TW
TW on 10 Sep 2025
Sorry my bad. Flipped the two. I wanted b to be the "cap."

Sign in to comment.

More Answers (3)

Matt J
Matt J on 10 Sep 2025
  3 Comments
TW
TW on 10 Sep 2025
Yuppa. But I think I wanted the "min" variable, not max.

Sign in to comment.


Matt J
Matt J on 10 Sep 2025
Edited: Matt J on 10 Sep 2025
Basically column b is the "cap."
If so, one could also do,
a=[1;2;3;4]; b=[1;1;3;3];
c=clip(a,-inf,b)
c = 4×1
1 1 3 3
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
  2 Comments
TW
TW on 10 Sep 2025
What's the difference between clip and min?
Matt J
Matt J on 10 Sep 2025
Edited: Matt J on 10 Sep 2025
In this case, there is no difference, but if you later decided you wanted both lower and upper thresholds, clip() will do that.
c = clip(a,lower,upper)

Sign in to comment.


Star Strider
Star Strider on 10 Sep 2025
I believe you want the minimum of the two columns.
Try this --
Data = array2table(randi(9, 10, 2), VariableNames=["A","B"])
Data = 10×2 table
A B _ _ 2 4 4 2 3 4 4 2 4 9 6 1 6 2 7 6 2 4 7 5
[C,idx] = min([Data.A, Data.B],[],2);
Data.C = C
Data = 10×3 table
A B C _ _ _ 2 4 2 4 2 2 3 4 3 4 2 2 4 9 4 6 1 1 6 2 2 7 6 6 2 4 2 7 5 5
OriginalColumn = idx
OriginalColumn = 10×1
1 2 1 2 1 2 2 2 1 2
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
The 'idx' output is the column chosen to be Column 'C'.
.

Products


Release

R2023b

Community Treasure Hunt

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

Start Hunting!