Assign Ranking in Matlab
    2 ビュー (過去 30 日間)
  
       古いコメントを表示
    
I have several cell-type variables A{Y,1}(Z x 13 cells) all sorted by column C. I need to assign a ranking (add column R) for the corresponding sorting order.
Example for a B {Y,1} (8 x 3 cells). My original cell is:
A   B      C        
MJ 65   0           
MJ 321  0,0125      
MJ 2    0,0125      
MJ 1987 0,0125    
MJ 87   0,02        
MJ 5    0,0375      
MJ 743  0,0375      
MJ 124  0,05
I would like to rank (column R) each A{Y,1} cell-type, considering that in case of tie, the mean value should be assigned.
A   B      C        R
MJ 65   0           1
MJ 321  0,0125      3   %Assign mean value
MJ 2    0,0125      3
MJ 1987 0,0125  >>  3
MJ 87   0,02        5
MJ 5    0,0375      6,5 %Assign mean value
MJ 743  0,0375      6,5
MJ 124  0,05        8
Thanks for your help.
10 件のコメント
採用された回答
  Azzi Abdelmalek
      
      
 2014 年 6 月 26 日
           v={'MJ' 65   0           
'MJ' 321  0.0125      
'MJ' 2    0.0125      
'MJ' 1987 0.0125    
'MJ' 87   0.02        
'MJ' 5    0.0375      
'MJ' 743  0.0375      
'MJ' 124  0.05}
[a,b,c]=unique([v{:,3}])
d=accumarray(c,(1:numel(c))',[],@mean)
v(:,4)=num2cell(d(c))
その他の回答 (1 件)
  Joseph Cheng
      
 2014 年 6 月 26 日
        Well we first start with finding which ones are the same.
 C = [0 .0125 .0125 .0125 .02 .0375 .0375 .05];
 R = 1:length(C)
 dC = diff(C);
 eRank = find(dC ==0);
 eRank = unique([eRank eRank+1]);
With eRank i have isolated the same valued C values. Now to see which ones are grouped together.
 eRankSpacing = [0 find(diff(eRank)>1) length(eRank)]
Now to substitute the averages of the consecutive same value ranks.
for i =1:length(eRankSpacing)-1
    tempave = mean(eRank(eRankSpacing(i)+1:eRankSpacing(i+1)));
    R(eRank(eRankSpacing(i)+1:eRankSpacing(i+1)))=tempave
end
7 件のコメント
  Joseph Cheng
      
 2014 年 6 月 26 日
				how about breaking it out of the cells and put them into arrays. Then putting them back? Not optimal but doable? I like Azzi's method but sometimes the long (non-built in function) way gets you thinking how these things are performed.
参考
カテゴリ
				Help Center および File Exchange で Shifting and Sorting Matrices についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


