Clear Filters
Clear Filters

how to find the second most repeated value in vector

41 views (last 30 days)
how to find the second most repeated value in vector x=[1 2 2 3 5 5 5] i use (mode ) to find the most repeated and frequency [m,f]=mode(x) m=5 the number repeated f=3 the freq.
now,i want to find the second repeated, can help me please

Accepted Answer

Stephen23
Stephen23 on 25 Aug 2017
Edited: Stephen23 on 25 Aug 2017
>> [n,bin] = hist(x,unique(x));
>> [~,idx] = sort(-n);
>> n(idx) % count instances
ans =
3 2 1 1
>> bin(idx) % corresponding values
ans =
5 2 1 3
>>

More Answers (4)

Walter Roberson
Walter Roberson on 25 Aug 2017
Delete all the copies of m out of x and take the mode again.
  1 Comment
Apoorva Srivastava
Apoorva Srivastava on 16 Jun 2019
Edited: Apoorva Srivastava on 16 Jun 2019
% For a vector x:
mode(x(find(x ~= mode(x))))
% In general, if x is a matrix (valid from R2018b onwards)
mode(x(find(x ~= mode(x, 'all'))), 'all')

Sign in to comment.


Andrei Bobrov
Andrei Bobrov on 25 Aug 2017
[g,v] = findgroups(x);
ii = accumarray(g(:),1);
jj = find(ii > 1);
out = [v(jj(2)), ii(jj(2))]

alexander Mcghee
alexander Mcghee on 17 Sep 2019
X = [1 1 1 1 1 5 5 5] ;
m = mode(X) % -> m=1
X(X==m) = NaN ;
m = mode(X) % -> m=5

mary m
mary m on 26 Aug 2017
thank you for all.. ^_^

Categories

Find more on Financial Toolbox in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!