Gleiche jmp-Datensätze per Schleife verbinden (Scripting)Ich habe 100 strukturell identische Datensätze. Alle enthalten eine ID und eine Konstante/ein Feld, das einen Namen dieses Datensatzes enthält.
Sie zu verketten (Format "long") ist kinderleicht.
Jetzt muss ich sie in das Format "Wide" zusammenführen, ist das genauso einfach?
Ich denke daran, diese Konstante als Präfix für alle JMP-Datensätze zu verwenden, aber wie könnte ich das in einer Schleife zum Laufen bringen.
Haben Sie Vorschläge?
Vielen Dank und liebe Grüße
Neuling
Betreff: Gleiche jmp-Datensätze per Schleife verbinden (Scripting)Ich kann mir nicht vorstellen, was die Datensätze darstellen oder wozu der resultierende kombinierte Datensatz dient. Diese Informationen können uns helfen, Ihr Problem besser zu lösen. Wenn die Datensätze strukturell identisch sind und nur sich wiederholende Konstanten enthalten, dann gibt es meines Erachtens effizientere Datenstrukturen und Datenmethoden für Ihr Problem.
Was werden Sie also in JMP mit dem kombinierten Datensatz tun?
Betreff: Gleiche jmp-Datensätze per Schleife verbinden (Scripting)Hier ist eine Überarbeitung meines ursprünglichen Skripts unter Berücksichtigung der von Ihnen bereitgestellten neuen Informationen.
Vielleicht möchten Sie auch die Verwendung Ihrer kontatatierten Datentabelle und die Verwendung von
Tabellen==>Split
Es kann Sie dem, was Sie wollen, sehr nahe bringen
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
constants = "ABCDEFGHIJKLMNOP";
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
Current Data Table( dt );
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
Column( dt2, 2 ) << set name( "Value1" );
dt2 << New Column( "Value2", formula( Floor( :Name( "Value1" ) + Random Integer( 5 ) ) ) );
dt2 << New Column( "Constant", character, set each value( Substr( constants, i - 1, 1 ) ) );
);
Wait( 0 );
Close( dt, nosave );
// Merge the tables together
// Get the table Names
tableList = {};
For( i = 1, i <= N Table(), i++,
Insert Into( tableList, Data Table( i ) << get name )
);
theConstant = Column( Data Table( tableList[N Items( tableList )] ), "Constant" )[1];
Data Table( tableList[N Items( tableList )] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[N Items( tableList )] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[N Items( tableList )] ), "Value2" ) << set name( theConstant || "_Value2" );
// Loop across the tables and using Update put them back together
For( i = N Items( tableList ) - 1, i >= 1, i--,
theConstant = Column( Data Table( tableList[i] ), "Constant" )[1];
Data Table( tableList[i] ) << New Column( theConstant || "_ID", character, formula( :ID ) );
Column( Data Table( tableList[i] ), "Value1" ) << set name( theConstant || "_Value1" );
Column( Data Table( tableList[i] ), "Value2" ) << set name( theConstant || "_Value2" );
Data Table( tableList[N Items( tableList )] ) << Update( With( Data Table( tableList[i] ) ), Match Columns( :ID = :ID ) );
);
Betreff: Gleiche jmp-Datensätze per Schleife verbinden (Scripting)Aus irgendeinem Grund schien mein Post vom Freitagnachmittag verloren gegangen zu sein...
Das ist der Preis, den man zahlt, wenn man im Zug arbeitet, scheint es zumindest.
Ich habe 100 Datensätze, jeder enthält eine andere Konstante:
z.B
Datensatz1
ID KONSTANTE WERT1 WERT2
1 A 123 123
2 A 123 123
Datensatz2
1 B 456 456
2 B 456 456
Datensatz3
1 C 789 789
2 C 789 789
alles, was ich möchte, ist, sie in einen einzigen Datensatz mit der folgenden Struktur zu bringen:
A_ID A_CONSTANT A_VALUE1 A_VALUE2 B_ID B_CONSTANT B_VALUE1 B_VALUE2
1 A 123 123 1 B 456 456
2 A 123 123 2 B 456 456 usw.,
Ich sehe zwei Wege, um dorthin zu gelangen:
(1) Fügen Sie jeder einzelnen Spalte in jedem Datensatz zuerst ein Präfix hinzu und führen Sie sie dann nach ID zusammen, oder
(2) kontatente zuerst alle Datensätze und transponiere/spiegele/schleife sie dann mit den konstanten Ebenen als Präfix (jedoch fand ich, dass JMP keine gemischten Datentypen mag)
Irgendeine Idee, wie man dorthin kommt ... ?
Jede Hilfe sehr geschätzt
Neuling
Betreff: Gleiche jmp-Datensätze per Schleife verbinden (Scripting)Hallo Tx,
Ich habe im Moment keinen Zugriff auf JMP (ich bin unterwegs), aber das Ergebnis sollte so aussehen.
Wenn ich mir jetzt die Struktur selbst anschaue, denke ich, dass das Verketten und dann das Umdrehen / Schleifen der kontatierten Tabelle ein einfacher Ansatz sein kann (die IDs sind nicht so wichtig). Allerdings würde ich gerne noch lernen, ob dies durch eine einfachste (Makro-)Schleife gelöst werden könnte.
Datei1:
ID Konstanter Wert
1 AB 123
2 AB 456
Datei2:
ID Konstanter Wert
1 ABW 123
2 ABW 456
...
Datei100:
ID Konstanter Wert
1 Z 123
2 Z 456
„Loop“ von CONSTANT
Erwünschtes Ergebnis
AB_ID AB_Konstante AB_Wert DEF_ID DEF_ Konstante DEF_Wert ... Z_ID Z_ Konstante Z_Wert
1 AB 123 1 DEF 123 ... 1 Z 123
2 AB 456 2 DEF 456 ... 2 Z 123
Betreff: Gleiche jmp-Datensätze per Schleife verbinden (Scripting)Mir ist nicht ganz klar, wie Ihre Ausgabedatentabelle aussehen soll, aber hier ist ein einfaches Beispiel, das Datentabellen zusammenführt, ähnlich der Struktur Ihrer Beschreibung
Names Default To Here( 1 );
// Create example data tables to be used in the merging
dt = Open( "$SAMPLE_DATA/Blood Pressure.jmp" );
dt << delete columns( {"Subject", "Dose"} );
dt << New Column( "ID", character, formula( "A" || Char( Row() ) ) );
dt << Go To( :ID );
dt << Move Selected Columns( To First );
For( i = 2, i <= N Cols( dt ), i++,
current data table(dt);
dt2 = dt << subset( selected rows( 0 ), columns( :ID, Column( i ) ) );
dt2 << New Column("Table Name", character, set each value(dt2<<GET name=""></GET>