How to search a table for a string

Hi, I have a table of data. One of these columns includes a column which I have labelled 'Participant Data'
I want to search 'Participant Data' for a particular string and return all the index of this table when it does pop up.
Additionally if I have 2 arrays of indices, how to return just the numbers that are in both indices?
Thanks!

1 comentario

dpb
dpb el 12 de Mzo. de 2020
  1. See strfind, contains and friends,
  2. intersect

Iniciar sesión para comentar.

Respuestas (1)

Abhisek Pradhan
Abhisek Pradhan el 16 de Mzo. de 2020
Searching a table for a string can done using find and strcmp. A combination of both function can be used to search a string:
find(strcmp('YourString',Table));
Refer the following link for model details.

4 comentarios

Lauren Dana
Lauren Dana el 19 de Sept. de 2022
Oddly enough I'm returning no results from that, even when I know that the table contains the string I'm searching for.
dpb
dpb el 19 de Sept. de 2022
Well, we can't debug what we can't see...attach a sample data file with the subject data and the code that reproduces the problem.
At least one possible cause can be that strfind is case-sensitive so has to match case as well.
Alternatively, we have no idea what "table" means in the context in which you're using it -- a Matlab table is a whole different animal and strcmp() doesn't work on the table itself; it'll needs be the content of a variable/column within the table -- and depending on that content.
strcmp does not work with table, it works with cell. First we have to convert table into cell.
Run the following code
name=["sam"; "jack"];
age=[20'; 27]; height=[4; 5];
tab=table(name, age, height)
tab = 2×3 table
name age height ______ ___ ______ "sam" 20 4 "jack" 27 5
extract the name sam
idx=strcmp("sam",tab)
idx = logical
0
dpb
dpb el 10 de En. de 2023
Editada: dpb el 10 de En. de 2023
" First we have to convert table into cell...."
No, not really. You do have to reference the variable of interest inside the table, though, yes...
Try the following instead...
name=["sam"; "jack"];
age=[20'; 27]; height=[4; 5];
tab=table(name, age, height);
tab(strcmp(tab.name,'sam'),:)
ans = 1×3 table
name age height _____ ___ ______ "sam" 20 4
Or, with new string variable functions,
tab(matches(tab.name,'sam'),:)
ans = 1×3 table
name age height _____ ___ ______ "sam" 20 4

Iniciar sesión para comentar.

Categorías

Más información sobre Characters and Strings en Centro de ayuda y File Exchange.

Preguntada:

el 12 de Mzo. de 2020

Editada:

dpb
el 10 de En. de 2023

Community Treasure Hunt

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

Start Hunting!

Translated by