Finding average using two input condition from a table

조회 수: 9 (최근 30일)
Harold Singh
Harold Singh 2019년 3월 22일
댓글: Harold Singh 2019년 3월 25일
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