Find a substring in table

60 visualizaciones (últimos 30 días)
katharina voigt
katharina voigt el 26 de Ag. de 2019
Respondida: Lei Hou el 30 de Ag. de 2019
Hi,
I'm struggling with finding the rows of columns that contains a certain substring (e.g. '.jpg') in a table column?
Any suggestions?
Kati

Respuestas (3)

Lei Hou
Lei Hou el 27 de Ag. de 2019
Hi Katharina,
You can make use of table indexing to get that data you want. I’ll use a simple example below to illustrate the output.
Suppose the table is like the following:
Var1 Var2 Var3
___________ ____ ____________
"file1.png" 1 "Image1.jpg"
"file2.jpg" 2 "Image2.jpg"
"file3.gif" 3 "Image3.gif"
"file4.jpg" 4 "Image4.png"
If you want to check which rows of column ‘Var1’ end with ‘.jpg’ and return those rows with all columns, here is the solution.
>> t1 = t(endsWith(t.Var1,'.jpg'),:);
The output 't1' is like the following
Var1 Var2 Var3
___________ ____ ____________
"file2.jpg" 2 "Image2.jpg"
"file4.jpg" 4 "Image4.png"
I’m not sure whether I understand your question correctly. If not, please provide more information about your use case or illustrate your expected output with my simple example.

katharina voigt
katharina voigt el 28 de Ag. de 2019
Editada: katharina voigt el 28 de Ag. de 2019
Thanks Lei for your response.
My question has changed a bit, but in essence it is the same.
I would like to have the row number, when t.Code == 'Response:' (the digits behind response can change and that is why i would like to have it more flexible.
So at the moment I tried this
startsWith(t.Code,'Response')
However, I get the following error:
Error using contains
Search term must be a string array, character vector, or cell array of character vectors.
Following this i tried
startsWith(cell(t.Code),'Response')
But it said that the conersion to cell from categorical is not possible.
Please find table (t) attached.
Thank you very much in advance.

Lei Hou
Lei Hou el 30 de Ag. de 2019
Hi Katharina,
You should cellstr to convert the categorical data to a cell array of character vectors as:
startsWith(cellstr(t.Code),'Response')
You can also call string to convert the categorical data to a string array as:
startsWith(string(t.Code),'Response')
Since R2018b, it is highly recommended to use string instead of cellstr when you work with text because string is more efficient.

Categorías

Más información sobre Characters and Strings en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by