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 Comment

  1. See strfind, contains and friends,
  2. intersect

Sign in to comment.

Answers (1)

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 Comments

Oddly enough I'm returning no results from that, even when I know that the table contains the string I'm searching for.
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
" 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

Sign in to comment.

Categories

Asked:

on 12 Mar 2020

Edited:

dpb
on 10 Jan 2023

Community Treasure Hunt

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

Start Hunting!