How to get statistical summary
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Mekala balaji
le 16 Oct 2018
Modifié(e) : Guillaume
le 16 Oct 2018
Hi,
I have below cell array,
Step 34
Step 56
Double 23
Stop 123
I want to get the summation and count of each category:
Desired output:
Step 90 2
Double 23 1
Stop 123 1
Continue 0 0
Here in the above example, no continue, but in some of my cases it exists. So for each scenario, I want to get the summation & count of: Step Double Stop Continue
0 commentaires
Réponse acceptée
Guillaume
le 16 Oct 2018
The way I'd do this is first convert your cell array to a table whose first column is of type categorical:
democell = {'Step', 34; 'Double', 56; 'Step', 23; 'Stop', 123}
demotable = table(categorical(democell(:, 1), {'Step', 'Double', 'Stop', 'Continue'}), cell2mat(democell(:, 2)), 'VariableNames', {'category', 'value'})
Your summation is then trivial:
varfun(@sum, demotable, 'GroupingVariables', 'category', 'InputVariables', 'value')
2 commentaires
Guillaume
le 16 Oct 2018
Modifié(e) : Guillaume
le 16 Oct 2018
Then, you'd have to use more or less Kevin's answer. I'd still stuff the input into a table and change the first column to categorical as it's easier to work with. I'd do the calculation like this:
catnames = categories(demotable.category)
[~, id] = ismember(demotable.category, catnames);
result = table(catnames, accumarray(id, 1, [numel(catnames), 1]), accumarray(id, demotable.value, [numel(catnames), 1]), 'VariableNames', {'category', 'count', 'sum'})
Plus de réponses (1)
Kevin Chng
le 16 Oct 2018
Modifié(e) : Kevin Chng
le 16 Oct 2018
A = ["Step" "Step" "Double" "Stop" "Continue"];
B = [ 34 56 23 123 0]
[c,~,d] = unique(A);
out = [c',accumarray(d,B),countcats(categorical(A))']
2 commentaires
Kevin Chng
le 16 Oct 2018
Modifié(e) : Kevin Chng
le 16 Oct 2018
change to
out = table(c',accumarray(d,B),[zeros(numel(A(B==0)))';countcats(categorical(A(B>0)))'])
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!