SQL의 GROUP BY가 MATLAB에서 수행하는 작업을 수행하려고합니다. 예를 들어,MATLAB의 GROUP BY
M = [
1,5];
2, 5;
3, 5;
1, 6;
2,6;
1,7]
SQL : 2
의해 결과 MAX (C1), M FROM C2 (C1, C2)를 선택 GROUP =
3, 5;
2,6;
1, 7]
어떻게하면 Matlab에서이 작업을 수행 할 수 있습니까? 통계 도구 상자에서
SQL의 GROUP BY가 MATLAB에서 수행하는 작업을 수행하려고합니다. 예를 들어,MATLAB의 GROUP BY
M = [
1,5];
2, 5;
3, 5;
1, 6;
2,6;
1,7]
SQL : 2
의해 결과 MAX (C1), M FROM C2 (C1, C2)를 선택 GROUP =
3, 5;
2,6;
1, 7]
어떻게하면 Matlab에서이 작업을 수행 할 수 있습니까? 통계 도구 상자에서
grpstats
는이 작업을 수행 할 수 있습니다
>> [grpstats(M(:,1), M(:,2), {'max'}) unique(M(:,2))]
ans =
3 5
2 6
1 7
또한 데이터가 데이터 세트 배열 (stats 도구 상자에서도 있음)에 있으면' grpstats'는 더 좋고 자동적입니다. 여기를 참조하십시오 : http://www.mathworks.com/help/toolbox/stats/dataset.grpstats.html –
사실,이 기능이없는 Octave를 사용하고 있습니다. 플러그인으로 설치할 수 있는지 알고 있습니까? 대체 솔루션을 알고 있습니까? – Gjorgji
http://www.orient-lodge.com/node/3732의 예제 코드를 사용할 수 있습니다. – itamarb
나는 간단한 해결책이 거기에있다 생각합니다. 여기 내가 matlab에 테스트하고 일 것입니다 :
>> M = [
1, 5;
2, 5;
3, 5;
1, 6;
2, 6;
1,7 ];
>> grpstats(M,M(:,2),{'max'})
ans =
3 5
2 6
1 7
당신은 (첫 번째 열이 잘 1 n
까지 내장되어있는 경우 나), 당신이 할 수있는 순서를 얻기 위해 몇 가지 전처리를하고 괜찮다면 그것은이 좋아 :
14
12
13
을 또는 귀하의 경우 :
accumarray([1 2 3 1]',[11 12 13 14]',[],@max)
이 줄 것이다
accumarray(M(:,1),M(:,2),[],@max)
주문에 유의하십시오. 예를 들어, 두 번째 숫자는 M(:,1) == 2
에 해당합니다.
옥타브에 accumarray가 있다고 가정합니다. 그렇지 않으면'M (:, 1)'의 'unique'값을 반복하여 결과를 얻지 않아야합니다. –