Boucle d'aide!Ok, j'adore JMP, mais j'ai besoin d'aide avec une boucle. Ce que j'essaie de faire est de regarder si une valeur 'Enfant' est dans la table parente (un exemple serait le numéro 2 ci-dessous). Si tel est le cas, je souhaite extraire les valeurs Child (3 et 4 ci-dessous) pour ce parent (2). Ensuite, je veux que le code vérifie la colonne parente pour 3,4 et ainsi de suite ....
Parent enfant
1 2
2 3
2 4
4 5
7 8
Parent enfant
1 2
1 3
1 4
1 5
7 8
J'espère que je décris bien cela ...
Re: Aide en boucle! @ cjs05 ,
Un certain nombre de choses.
1. Cette communauté est une communauté JMP et non une communauté SAS. Bien que certains utilisateurs connaissent bien les deux, ne vous attendez pas à ce que cette communauté fournisse des instructions de code sur SAS, je vous recommande d'essayer cette question sur community.sas.com si vous souhaitez utiliser le code SAS.
2 Si vous souhaitez réaliser cela dans JMP, vous êtes au bon endroit et laissez-nous essayer d'examiner vos données.
Tableau 1 ie La table de début comporte 2 colonnes, à savoir parent et composant. Essayez de faire quelque chose comme ci-dessous

dt = Current Data Table();
Mat = dt << Get As Matrix;
DesComponent = 6 ;
Check = Loc(Mat[0,2] == DesComponent); // To Initialize
While(N Rows(Check)!= 0,
Check = Loc(Mat[0,2] == DesComponent);
DesComponent = Mat[Check,1];
Print(DesComponent);
);Re: Aide en boucle!J'ai 1 table avec deux colonnes. Parent et composant. J'essaye d'écrire un programme qui fait ce qui suit.
Table de début
Composant parent
1 2
1 3
1 4
2 5
2 6
6 7
Dans ce
Composant parent
1. 2
1. 3
1. 4
1. 5
1. 6
1. 7
Fondamentalement, si un composant est dans la colonne parent (comme 2), je veux tirer les composants de 2.
La partie avec laquelle je me bats vraiment est de faire en sorte que cela tourne. J'ai besoin que sas cherche 6 dans la colonne parente puisqu'il s'agissait d'un composant de 2 et continue jusqu'à ce qu'il n'y ait plus de correspondance.
Ce tableau contient environ 1,2 million d'enregistrements. Certains parents ont 30 composants et d’autres beaucoup moins.
À un moment donné, on m'a donné la macro ci-dessous, mais je n'ai que JMP et je ne peux pas l'exécuter (à ma connaissance) ...
% macro boucle ;
%faire %jusqu'à ce que ( Et compter = 0 ) ;
proc sql ;
créer table avoir comme sélectionner se fondre ( b . parent , une . parent ) en tant que parent , se fondre ( une . composant , b . composant ) en tant que composant
de avoir un la gauche rejoindre avoir b sur b . composant = une . parent ;
courir ;
* s'il n'y a pas de composants dans le parent alors fait;
proc sql ;
sélectionner compter ( * ) dans : compter
de avoir une jointure avoir b sur b . composant = une . parent ;
courir ;
%fin ;
%réparer ;
%boucle ;
https://community.jmp.com/t5/forums/replypage/board-id/discussions/message-id/34434
Toute aide est appréciée, si cela peut même être fait du tout ...
Re: Aide en boucle! @ cjs05 ,
J'adorerais aider mais je ne comprends pas quelle est la table parente et quel est l'objectif recherché. Si vous avez 2 tables, contenant des informations sur les parents et les enfants et que vous essayez de chercher, vous pouvez utiliser "JOIN". Regardez sous:
Tables -> Joindre
Sinon, pourriez-vous télécharger des ensembles d'échantillons de vos données? Voici un exemple que j'ai assemblé à l'aide de l'exemple de données que vous pouvez également essayer et adapter à votre cas:
// Clean
Clear Globals(); Clear Log(); Close All(datatables,"No Save");
dt1 = Open( "$SAMPLE_DATA/Animals.jmp" );
dt2 = Open( "$SAMPLE_DATA/Animals Subset.jmp" );
// For Demo
Column(dt2,"miles") << Set Selected(1);
dt2 << Delete Columns;
// Look Up Information
dt3 = dt2 << Join(
With( dt1 ),
Select( :species, :subject, :season ),
SelectWith( :miles ),
By Matching Columns(
:species = :species,
:subject = :subject,
:season = :season
),
Drop multiples( 0, 0 ),
Include Nonmatches( 0, 0 ),
Preserve main table order( 1 )
);