Loop through multiple columns in table using if condition

5 Ansichten (letzte 30 Tage)
YaaW
YaaW am 6 Jan. 2023
Kommentiert: YaaW am 6 Jan. 2023
I have a large table, let's call it X, with many rows and columns. I want to loop through 10 columns (named X.A, X.B, X.C, etc.), and when all of the 10 columns for a specific row have the value NaN, I want a 0 in the column X.result, and when at least one or more of the columns has a value (an integer), I want it to return a 1 in the column X.result.
I tried to create this with looping through 1 column first and add more after, but I can't seem to manage it to work:
for i = 1:length(X.result)
if (~isnan((X.A)))
X.result(i) = 1;
end
end
I think I might be doing something wrong in defining variables but I can't seem to figure it out. The first line after the if statement ( if (~isnan((X.A))) ) works, but no 0 or 1 is assigned to the X.result column. Can anybody help me with this? Thanks!

Akzeptierte Antwort

VBBV
VBBV am 6 Jan. 2023
X.A = [randi([0 10],1,7) NaN]
X = struct with fields:
A: [2 10 7 7 3 4 8 NaN]
X.B = repmat(NaN,1,8);
for i = 1:length(X.A)
if (isnan(X.A(i)) & isnan(X.B(i)))
X.result(i) = 0;
elseif ~isnan(X.A(i)) | ~isnan(X.B(i))
X.result(i) = 1;
end
end
[X.A.', X.B.', X.result.']
ans = 8×3
2 NaN 1 10 NaN 1 7 NaN 1 7 NaN 1 3 NaN 1 4 NaN 1 8 NaN 1 NaN NaN 0
  2 Kommentare
VBBV
VBBV am 6 Jan. 2023
extend the condition /check you have inside the loop, upto 10 columns as
if (isnan(X.A(i)) & isnan(X.B(i))) & isnan(X.C(i)) ... so on
YaaW
YaaW am 6 Jan. 2023
Thanks! Keep forgetting to put the (i) behind the variable :)

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by