# Group values in a double & create new matrix according to the groups formed

조회 수: 3 (최근 30일)
Maria 2014년 8월 25일
댓글: Andrei Bobrov 2014년 8월 26일
I have a double variable A with 1 column and 30000 rows:
A=[44
12
79
12
83
63
53]
I applied the following code:
groupA=cell2mat(A(:,1));
[~, ~, ugroupA] = unique(groupA)
DA=dummyvar(ugroupA);
And I obtained a double matrix with 30000 rows and 262 columns with ones and zeros. The number of columns -262 - reflects the different numbers of the variable A.
What I am trying to do now is to apply basically the same code, but instead of getting a new column of ones and zeros for each different number in A, I would like to have a different column for the values between:
0 to 5
5 to 10
10 to 15
15 to 20
20 to 30
30 to 40
40 to 50
50 to 100
100 to 150
150 to 200
200 to 300
So instead of obtaining a new variable DA with 30000 rows and 262 columns, I would get a variable with 30000 rows but 11 columns.
Can someone help me please? Thank you

댓글을 달려면 로그인하십시오.

### 채택된 답변

Kelly Kearney 2014년 8월 25일
xedge = [0 5 10 15 20 30 40 50 100 150 200 300];
A = rand(1000,1)*300;
[n, idx] = histc(A, xedge);
isin = bsxfun(@eq, idx, 1:length(xedge)-1);
Not entirely sure what your dummyvar was, but I think this gets to the 1/0 matrix you wanted.

댓글을 달려면 로그인하십시오.

### 추가 답변 (1개)

Andrei Bobrov 2014년 8월 25일
편집: Andrei Bobrov 2014년 8월 26일
EDIT
v = [0
5
10
15
20
30
40
50
100
150
200
inf];
[~,b] = histc(A,v);
out = dummyvar(b);
##### 댓글 수: 3이전 댓글 1개 표시이전 댓글 1개 숨기기
Maria 2014년 8월 25일
I introduced cell2mat and it solved this error, but then when I do
out = dummyvar(b);
I get another error:
Error using dummyvar (line 85)
Each element of GROUP must be a positive integer.
Andrei Bobrov 2014년 8월 26일
corrected

댓글을 달려면 로그인하십시오.

### 카테고리

Help CenterFile Exchange에서 Analysis of Variance and Covariance에 대해 자세히 알아보기

### Community Treasure Hunt

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

Start Hunting!

Translated by