Match two rows value by a column value

2 views (last 30 days)
Hi guys,
In a table I want to count all matching rows based of a value of a columns
If two rows have value '1' in column 34 and in column 9 have value 'Corn' set a count in an edit text
If two rows have value '2' in column 34 and in column 9 have value 'Corn' set another count in an edit text
and so on..
new_data=get(handles.uitable4,'Data');
index1= strcmp(new_data(:,34),'1', new_data(:,9),'Corn');
index2= strcmp(new_data(:,34),'2', new_data(:,9),'Corn');
count_total_corn = count(index1, index2);
set(handles.edit4,'string', count_total_corn)
index3= strcmp(new_data(:,34),'3', new_data(:,9),'Rice');
index4= strcmp(new_data(:,34),'4', new_data(:,9),'Rice');
count_total_rice = count(index3, index4);
set(handles.edit5,'string', count_total_rice)
Could you give me an ideea? The above doesn't work...thanks
  1 Comment
Jan
Jan on 1 Jun 2022
"Doesn't work" is a lean description. Prefer to share the details of the problem, if you want others to solve it. Do you get an error message?

Sign in to comment.

Accepted Answer

Jan
Jan on 1 Jun 2022
Edited: Jan on 1 Jun 2022
index1= strcmp(new_data(:,34),'1', new_data(:,9),'Corn');
This is gun-shot-programming. Please read the documentation of strcmp to find out, how this command is used. I guess you want:
index1= strcmp(new_data(:,34), '1') & strcpm(new_data(:,9), 'Corn');
But what type is new_data(:,34) ? Maybe you need {new_data(:,34)} ?
"count" sounds like it counts, but it does this for patterns in a string. Again: read count .
count_total_corn = sum(index1) + sum(index2);
% or
count_total_corn = nnz([index1, index2]);
  4 Comments
Cristian Martin
Cristian Martin on 1 Jun 2022
My output for column 34 is [1]. How can I transform this into '1' ?

Sign in to comment.

More Answers (0)

Products


Release

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by