Schleife helfen!Ok, ich liebe JMP, brauche aber Hilfe mit einer Schleife. Was ich versuche zu tun, ist zu sehen, ob ein 'Child'-Wert in der übergeordneten Tabelle ist (ein Beispiel wäre Nummer 2 unten). Wenn ja, möchte ich die Child-Werte (3 und 4 unten) für diesen Parent (2) ziehen. Dann möchte ich, dass der Code die übergeordnete Spalte auf 3,4 und so weiter überprüft.
Elternteil
1 2
2 3
2 4
4 5
7 8
Elternteil
1 2
1 3
1 4
fünfzehn
7 8
Ich hoffe, ich beschreibe das gut ...
Re: Loop-Hilfe! @ cjs05 .
Einige Sachen.
1 Diese Community ist eine JMP-Community und keine SAS-Community. Es gibt zwar einige Benutzer, die mit beiden vertraut sind, aber nicht erwarten, dass diese Community Code-Anleitungen zu SAS bereitstellt. Ich würde jedoch empfehlen, diese Frage auf Communities.sas.com zu versuchen, wenn Sie den Code in SAS möchten.
2 Wenn Sie dies in JMP erreichen möchten, sind Sie an der richtigen Stelle und lassen Sie uns Ihre Daten prüfen.
Tabelle 1 d Die Anfangstabelle hat 2 Spalten, nämlich Eltern und Komponente. Versuchen Sie etwas wie unten

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: Loop-Hilfe!Ich habe eine Tabelle mit zwei Spalten. Elternteil und Komponente. Ich versuche, ein Programm zu schreiben, das Folgendes tut.
Beginn der Tabelle
Übergeordnete Komponente
1 2
1 3
1 4
2 5
2 6
6 7
Das sehr gut finden
Übergeordnete Komponente
1 2
1 3
1 4
1 5
1 6
1 7
Wenn sich eine Komponente in der übergeordneten Spalte befindet (wie 2), möchte ich Komponenten von 2 ziehen.
Der Teil, mit dem ich wirklich zu kämpfen habe, ist, diese Schleife in die Schleife zu bekommen. Ich brauche sas, um in der übergeordneten Spalte nach 6 zu suchen, da es eine Komponente von 2 war und so lange weitergeht, bis es keine Übereinstimmungen gibt.
Diese Tabelle hat etwa 1,2 Millionen Datensätze. Einige Eltern haben 30 Komponenten und andere haben viel weniger.
An einem Punkt wurde mir das Makro unten gegeben, aber ich habe nur JMP und kann es nicht ausführen (das ist mir bekannt) ...
%Makro Schleife ;
%tun %bis um ( & Anzahl = 0 ) ;
Proc sql ;
erstellen Tabelle haben als wählen verschmelzen ( b . Elternteil . ein . Elternteil ) als Elternteil . verschmelzen ( ein . Komponente . b . Komponente ) als Komponente
von haben eine links beitreten haben b auf b . Komponente = ein . Elternteil ;
Lauf ;
* Wenn im übergeordneten Element keine Komponenten vorhanden sind, dann erfolgt.
Proc sql ;
wählen Anzahl ( * ) in : Anzahl
von haben eine Verbindung haben b auf b . Komponente = ein . Elternteil ;
Lauf ;
%Ende ;
%heilen ;
%Schleife ;
https://community.jmp.com/t5/forums/replypage/board-id/discussions/message-id/34434
Jede Hilfe wird geschätzt, wenn dies überhaupt möglich ist ...
Re: Loop-Hilfe! @ cjs05 .
Ich würde gerne helfen, aber ich verstehe nicht, was der Stammtisch ist und was Sie suchen. Wenn Sie 2 Tabellen mit Eltern- und untergeordneten Informationen haben und nachschlagen möchten, können Sie "JOIN" verwenden. Nachsehen unter:
Tabellen -> Verbinden
Ansonsten könnten Sie bitte Beispielsätze Ihrer Daten hochladen. Hier ein Beispiel, das ich mit Beispieldaten zusammengestellt habe, die Sie auch an Ihren Fall anpassen können:
// 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 )
);