deleting table above a specific row
Show older comments
if i have a table and it has 05 columns.
if i want that when column 3 has a value 25, then delete all the rows above it.
and similarly if column 4 has a value 30, then delete the rows in all the columns below this value.
Answers (2)
KSSV
on 13 Feb 2022
% Demo example
x = (1:100)' ;
y = rand(size(x)) ;
T = table(x,y) ;
% remove rows which have values greater than 0.7 values
idx = T.(2)>0.7 ;
% remove the rows
T(idx,:) = [] ;
1 Comment
VBBV
on 13 Feb 2022
Zero indexing works for Logical arrays in MATLAB, but doesn't work for numeric arrays. Quite Interesting :)
Try this:
col12 = (1:5)';
col34 = [1,2,25, 30, 1000]';
t = table(col12, col12, col34, col34)
% Find last row where column 3 is exactly 25
row25 = find(t{:, 3} == 25, 1, 'last')
% Delete rows above that row25
t = t(row25 : end, :)
% Find first row where column 4 is exactly 30
row30 = find(t{:, 3} == 30, 1, 'first')
% Delete rows below that row30
t = t(1 : row30, :)
Categories
Find more on Matrices and Arrays 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!