Function similar to MS Excel "subtotal"?
13 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I have a 150x2 matrix in which the first column contains numbers that can be considered 'grouping variables' and the second column contains values associated with those grouping variables. So a small 5x2 version would look like this
1 23
1 29
1 43
2 38
2 22
I'd like to average the values associated with each grouping variable. So the above example would yield an average of 31.67 (for variable 1) and 30 (for variable 2). In Excel this can be achieved using Data --> "Subtotals". Does anybody know of a similar function or method to achieve this in Matlab?
Thanks
0 commentaires
Réponses (3)
Titus Edelhofer
le 2 Nov 2011
Hi George,
I don't know a single function, but the functionality is not difficult to achieve:
x = [1 23; 1 29; 1 43; 2 38; 2 22]
% find the different indices:
id = unique(x(:,1));
subTotals = zeros(size(id));
for i=1:numel(id)
subTotals(i) = mean(x(id==id(i), 2));
end
Titus
0 commentaires
George
le 2 Nov 2011
1 commentaire
Titus Edelhofer
le 3 Nov 2011
Hi George,
yes of course! My code accidently worked because for the example vals and id are the same ...
Titus
Kelly Kearney
le 2 Nov 2011
If your grouping variable includes only integers, then
x = [...
1 23
1 29
1 43
2 38
2 22];
subtot = accumarray(x(:,1), x(:,2), [], @mean);
0 commentaires
Voir également
Catégories
En savoir plus sur Matrix Indexing 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!