How do I extract the values of my data that constitute a certain percentile?
7 views (last 30 days)
Show older comments
MathWorks Support Team
on 1 Mar 2019
Answered: MathWorks Support Team
on 25 Mar 2019
I have been using the 'prctile' function in MATLAB R2017b to find certain percentiles of my data. I am wondering if there is a way to automatically return the values that constitute these percentiles.
For example, I am getting the 10th, 20th and 30th percentiles of my data by the following line:
>> p10 = prctile(data, [10 20 30]);
How can I extract the values of 'data' that are in each of these percentiles?
Accepted Answer
MathWorks Support Team
on 1 Mar 2019
The 'prctile' function does not provide an automatic way to extract the values of your data that constitute a certain percentile. However, you can use 'prctile' along with another couple lines of code to obtain these values. Below are a couple examples:
Method 1:
>> m = rand(1, 20); % generate a random list of numbers
>> percentiles = prctile(m, [10 20 30]);
>> vals10 = m(m <= percentiles(1)); % values in the 10th percentile
>> vals20 = m(m <= percentiles(2)); % values in the 20th percentile
>> vals30 = m(m <= percentiles(3)); % values in the 30th percentiles
Method 2:
>> m = rand(1, 20);
>> mSorted = sort(m);
>> vals10 = mSorted(1:floor(end * 0.1));
>> vals20 = mSorted(1:floor(end * 0.2));
>> vals30 = mSorted(1:floor(end * 0.3));
Note: Method 2 does not calculate the percentiles, just the values that constitute each percentile. It also does not keep the data in its original order.
0 Comments
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!