finding unique phrases and their frequency in a cell array
1 view (last 30 days)
Show older comments
Danielle Leblance
on 13 Apr 2020
Commented: Star Strider
on 14 Apr 2020
Hi,
I usually deal with numbers but never with text. I have a cell array of phrases(attached the mat file) . I want to know what are these uniques phrases and the frequency of each phrase (how many time it appears). Any help would be greatly appreciated.
0 Comments
Accepted Answer
Star Strider
on 13 Apr 2020
Try this:
D = load('matlab.mat');
nbEmployees = D.nbEmployees;
[uE,~,ix] = unique(nbEmployees);
tally = accumarray(ix, 1);
Out = table(uE, tally, 'VariableNames',{'Phrase','Frequency'})
producing:
Out =
13×2 table
Phrase Frequency
______________________________________ _________
{'Between 1,000 and 2,999 employees'} 1
{'Between 100 and 149 employees' } 5
{'Between 15 and 24 employees' } 11
{'Between 150 and 199 employees' } 1
{'Between 200 and 249 employees' } 1
{'Between 25 and 49 employees' } 9
{'Between 250 and 499 employees' } 1
{'Between 5 and 14 employees' } 25
{'Between 50 and 74 employees' } 9
{'Between 500 and 749 employees' } 10
{'Between 75 and 99 employees' } 4
{'I don't know' } 3
{'Under 5 employees' } 70
.
0 Comments
More Answers (1)
Danielle Leblance
on 14 Apr 2020
Edited: Danielle Leblance
on 14 Apr 2020
1 Comment
Star Strider
on 14 Apr 2020
Your file did not have blank cells.
Experiment with this:
D = load('matlab.mat');
nbEmployees = D.nbEmployees;
nbEmployees = nbEmployees(cellfun(@(x)~isempty(x), nbEmployees),:);
[uE,~,ix] = unique(nbEmployees);
tally = accumarray(ix, 1);
Out = table(uE, tally, 'VariableNames',{'Phrase','Frequency'})
That runs without error, and assumes that ‘blank’ elements are ‘empty’ elements.
.
See Also
Categories
Find more on Matrices and Arrays 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!