Working only with the equal values based on columns
조회 수: 1 (최근 30일)
이전 댓글 표시
Hello
I have a database similar to this example:
Where my last two columns are pixel position.
I want to average only the beams for which the last two column are equal. So for example row 2 and row 3 have the same values in the last two column -> I average the rest of the columns.
Row 1 and 6 have the same values in the last two columns -> I average the rest of the columns.
Row 1 and 2 do not have the same values in both of the last two columns -> I do not average the rest of the columns.
Any ideas?Thank you!
152.8357 164.3893 126.34 131.65 125.78 125.55 120.85 NaN 25 73
149.288 NaN 132.42 140.36 138.26 140.65 142.57 NaN 25 74
159.8254 NaN 123.74 140.59 135.69 143 NaN NaN 26 74
152.828 NaN 127.59 136.16 124.92 125.11 119.38 NaN 27 69
139.56 141.28 127.75 129.74 124.24 109.4 NaN 118.84 27 69
129.69 158.8131 153.6606 127.84 122.14 NaN 127.76 131.23 27 73
댓글 수: 0
답변 (1개)
Brunno Machado de Campos
2021년 10월 19일
Hi Bianca, until that 'single line answer' does not pop up, try using this:
aa = Table; %Your table
eqs = aa(:,end-1:end);
idx = 0;
Exc = [];
for i = 1:size(eqs,1)
if ~any(i==Exc)
Tvg = prod(eqs(i,:)==eqs,2);
idx = idx + 1;
Final(idx,:) = nanmean(aa(find(Tvg),:),1); % nanmean because you have NaNs in your example
Exc = [Exc,find(Tvg)'];
end
end
Your final table, I belive will be the "Final" var.
Best
댓글 수: 0
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!