# Counting in one column that is conditional on another column

5 views (last 30 days)

Show older comments

For each cell (or "trial") in the variable trials (attached):

I'd like to count the number of 1's in column 4 that is dependent on certain conditions in column 2 for each trial.

Conditions saved in their own variable:

Count 1's in column 4 if column 2 is between 0 and 4 (less than 4, not equal to)

Count 1's in column 4 if column 2 is between 4 and 5 (less than 5, not equal to)

Count 1's in column 4 if column 2 is between 5 and 6 (less than 6, not equal to)

Count 1's in column 4 if column 2 is between 6 and 7 (less than 7, not equal to)

Count 1's in column 4 if column 2 is between 7 and end

##### 0 Comments

### Accepted Answer

per isakson
on 2 Apr 2021

Edited: per isakson
on 2 Apr 2021

Does this do what you look for?

%%

limits = { [0;4], [4;5], [5;6], [6;7], [7;inf] };

%% some simple test data

trials = {[ 0, 2, 0, 1, 0, 0, 0

0, 2, 0, 0, 0, 0, 0

0, 5, 0, 1, 0, 0, 0

0, 5, 0, 0, 0, 0, 0

0, 5, 0, 1, 0, 0, 0

0, 5, 0, 0, 0, 0, 0

0, 9, 0, 1, 0, 0, 0 ]};

%%

fh = @(trial,lim) sum( (trial(:,4)==1) & (lim(1)<=trial(:,2) & trial(:,2)<lim(2)), 1 );

%%

counts = zeros( numel(trials), numel(limits) );

for rr = 1 : numel(trials)

for cc = 1 : numel(limits)

counts(rr,cc) = fh( trials{rr}, limits{cc} );

end

end

Inspect

>> counts

counts =

1 0 2 0 1

Yes, sum() can operate on logicals

>> sum([true,true,false])

ans =

2

### More Answers (1)

Steven Lord
on 2 Apr 2021

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!