How to sort a table into five subsets?
    4 views (last 30 days)
  
       Show older comments
    
Hi, 
I have table with stocks. Now I would like to sort them into subsets according to their size. My goal is to create the 5 subsets according to their size, with each of them holding 20% of the stocks. Unfortunatley I don't know how to do it. The size is the market capitalization. The dataset is attached to the question.
ID is stands for the diffrent stocks 
years are the oberved years (1962-2016) 
sumMC is the market capitalization of each stock in every year. 
Does someone know how to do it? 
Thank you in advance
4 Comments
  Image Analyst
      
      
 on 25 Apr 2021
				So what was wrong with the code I posted below?  I have about 1/5 of all companies in each groups.  Did you want 1/5 or the dollar amount (instead of 1/5 the number of companies) in each group?  Please be clear.
Accepted Answer
  Image Analyst
      
      
 on 25 Apr 2021
        Just use sort and linear indexing
sortedCaps = sort(marketCap, 'Ascend');
stocksPerGroup = length(sortedCaps) / 5;
% Extract stocks into group #1.
firstIndex = 1;
lastIndex = round(stocksPerGroup);
group1 = sortedCaps(firstIndex : lastIndex);
% Extract stocks into group #2.
firstIndex = lastIndex + 1;
lastIndex = round(2 * stocksPerGroup);
group2 = sortedCaps(firstIndex : lastIndex);
% Extract stocks into group #3.
firstIndex = lastIndex + 1;
lastIndex = round(3 * stocksPerGroup);
group3 = sortedCaps(firstIndex : lastIndex);
% Extract stocks into group #4.
firstIndex = lastIndex + 1;
lastIndex = round(4 * stocksPerGroup);
group4 = sortedCaps(firstIndex : lastIndex);
% Extract stocks into group #5.
firstIndex = lastIndex + 1;
lastIndex = length(sortedCaps);
group5 = sortedCaps(firstIndex : lastIndex);
0 Comments
More Answers (0)
See Also
Categories
				Find more on Introduction to Installation and Licensing 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!