how to find specific value in a table?

if i have hsl table like this, so how to find row that have value = 3 in column 1 (which is 'clusternya')?
i've tried to use
ind1= strfind(hsl.clusternya,'3')
but the error said like this:
Error using strfind
Cell must be a cell array of character vectors.

 Accepted Answer

KSSV
KSSV on 11 Jun 2021
Edited: KSSV on 11 Jun 2021
idx = hsl.clusternya==3 ; % logical indexing
T(idx,:)

7 Comments

Fabyola
Fabyola on 11 Jun 2021
Edited: Fabyola on 11 Jun 2021
i've tried and it said
Undefined operator '==' for input arguments of type 'cell'.
Stephen23
Stephen23 on 11 Jun 2021
Edited: Stephen23 on 11 Jun 2021
@Fabyola: why is clusternya a cell array if it apparently only contains scalar numerics?
If its data are all scalar numeric, then you should fix the creation/importing of this data, so that any numeric data is stored in numeric arrays, not in cell arrays. Then your data processing (like this question) will be much easier.
i used cell array for the enitre table because of the other columns contains a string, on those kelurahan's variable
The whole point of table objects is that each variable can be a different datatype. The kelurahan variable is the only one that needs to be cell (or string() object, or categorical object)
@Fabyola: only kelurahan should be a string array or cell array of charactor vectors. All of the other data should be numeric vectors/arrays, otherwise you will make processing your numeric data very difficult.
aah i see, okaay i'll try them. thanks for your advice, all.
What if we have UITable in app designer @KSSV?

Sign in to comment.

More Answers (1)

ind1 = find(hsl.clusterya == 3)
But you should probably be considering, for example
mask1 = hsl.clusterya == 3;
dist = sqrt(hsl.v1(mask1).^2 + hsl.v2(mask1).^2)
because using logical masks is generally faster than using find()

Categories

Asked:

on 11 Jun 2021

Community Treasure Hunt

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

Start Hunting!