Finding average using two input condition from a table

8 次查看(过去 30 天)
Hi, I hope someone can help me with this question. I'd like to find the average of the 3rd column of a table using conditions on the 1st and 2nd columns. For example, in the table below, I'd like to find the average z with x = 1 AND y = 1800 (this should be average of 1.5 and 2), and when x = 2, y = 1900 (1.4 alone), etc
x y z
1 1800 1.5
2 1900 1.4
3 2100 3
3 1900 1.1
1 1900 0.8
2 2700 1.2
3 1800 2

采纳的回答

Peter Perkins
Peter Perkins 2019-3-25
Several ways to do this, including findgroups/splitapply, groupsummary, and varfun:
>> XYZ = [ ...
1 1800 1.5
2 1900 1.4
3 2100 3
3 1900 1.1
1 1900 0.8
2 2700 1.2
1 1800 2];
>> T = array2table(XYZ,'VariableNames',{'x' 'y' 'z'})
T =
7×3 table
x y z
_ ____ ___
1 1800 1.5
2 1900 1.4
3 2100 3
3 1900 1.1
1 1900 0.8
2 2700 1.2
1 1800 2
>> varfun(@mean,T,'GroupingVariables',{'x' 'y'})
ans =
6×4 table
x y GroupCount mean_z
_ ____ __________ ______
1 1800 2 1.75
1 1900 1 0.8
2 1900 1 1.4
2 2700 1 1.2
3 1900 1 1.1
3 2100 1 3
  1 个评论
Harold Singh
Harold Singh 2019-3-25
Peter, Many thanks. This works. Sure beats looping through the table, and computing the average.
Harold

请先登录,再进行评论。

更多回答(1 个)

Harold Singh
Harold Singh 2019-3-22
Sorry, I made a mistake with the table. The corrected table is:
x y z
1 1800 1.5
2 1900 1.4
3 2100 3
3 1900 1.1
1 1900 0.8
2 2700 1.2
1 1800 2

类别

Help CenterFile Exchange 中查找有关 Tables 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by