Mean of values in acolumn depending on VARYING values of another column

1 vue (au cours des 30 derniers jours)
Freya
Freya le 4 Oct 2023
Commenté : Freya le 5 Oct 2023
Hi, I would like to calculate the mean of values in a coulmn, based on the values in another column. However, different from other questions asked previously on this forum, the values in the second column I need to use are not specific, but change. Please see attached file and hopefully it will be easier to get what I mean. Maybe I need to use a for loop running through all the values of the second column? Thank you!

Réponse acceptée

Dyuman Joshi
Dyuman Joshi le 4 Oct 2023
in =readmatrix('Book2.xlsx');
disp(in)
1 1 2 2 3 1 4 2 5 3 6 1 7 2 8 4 9 1 10 5 11 6 12 5 13 5 14 4 15 6 16 3 17 6 18 2 19 1 20 5 21 3 22 2 23 4
out = accumarray(in(:,2),in(:,1),[],@mean)
out = 6×1
7.6000 10.6000 14.0000 15.0000 13.7500 14.3333
  14 commentaires
Dyuman Joshi
Dyuman Joshi le 5 Oct 2023
Use the first output of unique()
format longg
in = readmatrix('Book3.xlsx');
[out1,~,idx] = unique(in(:,2))
out1 = 535×1
1.0e+00 * 1000227087 1000227106 1000594972 1000594973 1000594974 1000594975 1000594976 1000594977 1000594978 1000594979
idx = 13354×1
1 2 3 4 5 6 7 8 9 10
out2 = accumarray(idx,in(:,1),[],@mean)
out2 = 535×1
0.453491780924332 0.240638995346782 0.366433792273591 0.155783195173162 0.359111503883272 0.334567544249371 0.234826867085867 0.335793779361822 -0.0249592514078918 0.260758590555741
Concatenate them horizontally to get them in the same array
out = [out1 out2];
Freya
Freya le 5 Oct 2023
Great! Thanks again @Dyuman Joshi!

Connectez-vous pour commenter.

Plus de réponses (1)

Ken Garrard
Ken Garrard le 4 Oct 2023
You do not need a for loop.
Assumming that your data is in an Nx2 variable named, mydata.
% Select rows matching criteria in column 2
% For example, values in column 2 greater than one and less than five
hits = mydata(:,2) > 1 & mydata(:,2) < 5;
% Mean of values from column 1
mean(mydata(hits,1))
ans =
12.7273

Catégories

En savoir plus sur Historical Contests dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by