Loop through multiple columns in table using if condition

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!

 Réponse acceptée

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 commentaires

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
Thanks! Keep forgetting to put the (i) behind the variable :)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by