Group number identification consecutive numbers
6 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello
I have millions of 1-0 data in my database. I need to detect groups of consecutive units. I would like to ask you to create the attribute "Gr_numb". An example is given in the attached file. The searched attribute is calculated there. But in Excel it is very complicated and unusable for a large database.
Thank You
6 Commenti
Image Analyst
il 11 Nov 2022
OK I think I see now, though it is probably a poor example since the second group and third groups both have a group label of 3. I don't see why two different groups should have the same group number, but the example would have been clearer if the third group had had 4 or 5 1's in it instead of 3 (same as the prior group). You must have the Mind Reading Toolbox Bruno.
Jan
il 11 Nov 2022
Modificato: Jan
il 11 Nov 2022
@Image Analyst: The term "group number" is misleading. "Number of group members" would be clearer.
Risposta accettata
Jan
il 11 Nov 2022
Modificato: Jan
il 11 Nov 2022
index = [1 0 1 1 1 0 0 0 1 1 1 0 1 1 0 0 1 1];
[b, n] = RunLength(index);
m = n(b == 1);
Gr_numb = zeros(size(index));
GR_numb(index == 1) = RunLength(m, m);
If you do not have a C-compiler installed, use RunLength_M from this submission.
Or:
d = [true, diff(index) ~= 0]; % TRUE if values change
n = diff(find([d, true])); % Number of repetitions
m = n(index(d) == 1);
index(index == 1) = repelem(m, m)
1 Commento
Più risposte (1)
Stephen23
il 11 Nov 2022
X = [1;0;1;1;1;0;0;0;1;1;1;0;1;1;0;0;1;1;0;1;0;0;1;1;0;1;1;1;1;0;1;1;1;1;1;;0;1;1;1;1;1;1;1;1;1;0;0;0;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;1;0]
D = diff([0;X;0]);
B = find(D>0);
E = find(D<0);
L = E-B;
G = X;
G(X==1) = repelem(L,L)
0 Commenti
Vedere anche
Categorie
Scopri di più su Correlation Models in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!