grouping data by value
11 次查看(过去 30 天)
显示 更早的评论
I have a vector of data X that I want to divide into 10 different groups depending on the values. i,e the highest 10% together, then the lower 10% together etc.... How can I create another vector that assigns numbers to such groups. For example highest 10% should have a value of 1, then the lower 10% a value of 2 , ... then the lowest 10% a value of 10. I used :
DecileThresholds= quantile(X,(1:9)/10);
to find the points that separates the categories but I don't want to write a loop to categorize them. I thought that matlab probably has a function that automatically and elegantly give me the category number. Thanks
2 个评论
Image Analyst
2015-8-4
It's not clear to me. Let's say you have a normal distribution with 1000 elements with values going from 0 to 10. Do you want 10 arrays where each array has 100 (which is 10% of 1000) elements? Or do you want 10 arrays where each array can have a different number of elements, because the number of elements in the range 500-600 will be more than the number with values in the range 0-100?
采纳的回答
更多回答(1 个)
Azzi Abdelmalek
2015-8-4
A=rand(1,106);
n=numel(A);
[b,idx]=sort(A);
m=round(n/10);
p=n-m*9;
ii=repmat(1:9,m,1);
jj=[ii(:) ;10*ones(p,1)];
out=accumarray(jj,b',[],@(x) {x});
celldisp(out)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Data Distribution Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!