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

2 次查看(过去 30 天)
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!

采纳的回答

Dyuman Joshi
Dyuman Joshi 2023-10-4
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 个评论
Dyuman Joshi
Dyuman Joshi 2023-10-5
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];

请先登录,再进行评论。

更多回答(1 个)

Ken Garrard
Ken Garrard 2023-10-4
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

类别

Help CenterFile Exchange 中查找有关 Creating and Concatenating Matrices 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by