How can I index/loop through table(T) to get the rows with logical 1s in T.logical. Also, check if the logical is 0s, if so get the respective row with the string 'High' from T.Level? T = table; A = randi([0, 1], 5, 5); c1 = A(:,1); c2 = A(:,2); c3 = A(:,3); c4 = A(:,4); c5 = A(:,5); vert = vertcat(c1, c2, c3); Types = {'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C'}'; Level = {'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High'}'; T.Types = Types; T.logical = vert; T.Level = Level; TrueTable = table; TrueTable.UniqueType = unique(T.Types); numTypes = height(TrueTable); TrueTable.Total = cell(numTypes, 1);
Neeta Dsouza answered .
2025-11-20
Construct table T:
A = randi([0, 1], 5, 5);
vert = reshape(A(:,1:3),[],1);
Types = {'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C'}';
Level = {'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High'}';
T = table(Types,vert,Level);
T = renamevars(T,'vert','logical')
T = 15×3 table
Types logical Level
_____ _______ __________
{'A'} 1 {'Low' }
{'B'} 0 {'Medium'}
{'C'} 1 {'High' }
{'D'} 0 {'Low' }
{'A'} 1 {'Medium'}
{'B'} 0 {'High' }
{'C'} 1 {'Low' }
{'D'} 1 {'Medium'}
{'A'} 0 {'High' }
{'B'} 1 {'Low' }
{'C'} 1 {'Medium'}
{'D'} 0 {'High' }
{'A'} 0 {'Low' }
{'B'} 1 {'Medium'}
{'C'} 1 {'High' }
Get a new table (called rows) that contains the rows of T where logical is 1 or Level is 'High':
idx = T.logical | strcmp(T.Level,'High'); rows = T(idx,:)
rows = 12×3 table
Types logical Level
_____ _______ __________
{'A'} 1 {'Low' }
{'C'} 1 {'High' }
{'A'} 1 {'Medium'}
{'B'} 0 {'High' }
{'C'} 1 {'Low' }
{'D'} 1 {'Medium'}
{'A'} 0 {'High' }
{'B'} 1 {'Low' }
{'C'} 1 {'Medium'}
{'D'} 0 {'High' }
{'B'} 1 {'Medium'}
{'C'} 1 {'High' }