Group number identification consecutive numbers
5 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Image Analyst
le 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
le 11 Nov 2022
Modifié(e) : Jan
le 11 Nov 2022
@Image Analyst: The term "group number" is misleading. "Number of group members" would be clearer.
Réponse acceptée
Jan
le 11 Nov 2022
Modifié(e) : Jan
le 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 commentaire
Plus de réponses (1)
Stephen23
le 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 commentaires
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
