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개)

dbmn
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
  댓글 수: 1
Peter Jaenicke
Peter Jaenicke 2017년 7월 14일
First of all, thank you for your answer. Using
P.Type = categorical(P.Type)
results into
Error using categorical (line 347)
Could not find unique values in DATA using the UNIQUE function.
Caused by:
Error using cell/unique (line 85)
Input A must be a cell array of character vectors.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by