How can I delete/extract rows from a table with cell columns consisting of str and numeric values
1 次查看(过去 30 天)
显示 更早的评论
I have a table comprising of number and cell columns:
From this table I would like to extract all rows which have "pits" in a cell in column 3 / Type.
My approaches so far:
1. Extract it via "strfind"
Ppits=P(cellfun(@isempty, strfind(P.Type, 'pits')), :);
Error:
Error using strfind
Cell must be a cell array of character vectors.
2. Delete rows with "0" or []. All attempts like logical indexing didn't work due to the fact that it's a table or the column has numerical and str values.
e.g.
>> toDelete = P < 6;
P(toDelete,:) = [];
Undefined operator '<' for input arguments of type 'table'.
1 个评论
Peter Perkins
2017-7-18
Change the zeros to ''. Those elements will become undefined categorical values.
回答(1 个)
dbmn
2017-7-14
The easiest way to extract the "pits" is to do the following
% Convert your column type to a format called categorical
% This format is supported by the table format
P.Type = categorical(P.Type)
% Then you can compare it like you would with numbers
P(P.Type == 'pits', :)
if you want to do the same with f.ex PH value just use
P(P.pH < 7, :)
and combine the two as you like
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Categorical Arrays 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!