Teilen Sie die Tabelle basierend auf der Liste der SpaltennamenHallo JMP-Community, ich hoffe, Sie können mir bei diesem Problem helfen:
Ich habe ein Skript erstellt, das es Benutzern ermöglicht, 1x-, 2x- und/oder 3x-SD-Werte für mehrere Probenkonzentrationen mit einem bestimmten (einzugebenden) Faktor zu berechnen. Die 1x, 2x und/oder 3x SD-Werte können alle über 3 Kontrollkästchen ausgewählt werden. Dieser erste Teil funktioniert perfekt.
Basierend auf der ausgewählten Anzahl an Kontrollkästchen enthält die resultierende Datentabelle eine variable Anzahl von Spalten, die ich in eine neue Datentabelle aufteilen möchte.
Ich habe versucht, ein zweites Skript zu erstellen, das die Datentabelle basierend auf allen vorhandenen SD-Spalten aufteilt (immer beginnend mit Spalte 3), aber ohne Erfolg. Das ist mein bisheriges Skript:
Names Default To Here( 1 );
dt1 = Data Table( "SD Calculation" );
//Get list of Column names
ColList = dt1 << Get Column Names();
//Split dt1 based on ColList
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split( ColList[3] ),
Remaining Columns( Drop All ),
Sort by Column Property
);
Die resultierende geteilte Tabelle sieht folgendermaßen aus und es fehlen die meisten Daten:

So sollte es aussehen (ich kann dies nur erreichen, indem ich alle Spaltennamen spezifiziere, allerdings werden nicht alle Spalten in jeder Tabelle vorhanden sein (es basiert auf der Benutzerauswahl):

Wenn alle SD-Berechnungen ausgewählt werden (±1–3 SD für 5 Probenkonzentrationen), sollten 30 Spalten vorhanden sein.
Das Ziel meines Drehbuchs:
NomRP-Werte sind: 50, 71, 100, 141 und 200 und für jeden dieser NomRP-Werte können 1-3x SD-Werte berechnet werden. Alle berechneten Ergebnisse sollten in einer neuen Datentabelle aufgeteilt werden. Mit diesen Daten möchte ich im Graph Builder eine Abbildung erstellen, die Bereiche basierend auf den berechneten SD-Werten zeigt.
Mit freundlichen Grüße,
Pim.
-Edit: Tabelle „SD-Berechnung“ hinzugefügt.
Datenmischung und -bereinigungBetreff: Tabelle basierend auf der Liste der Spaltennamen teilenVielen Dank, Pim/Hadley, für die Frage/Antwort zu diesem Thema!
Mir ist klar, dass dies ein alter Beitrag ist, aber ich wollte jedem, der danach kommt, einen Krümel hinterlassen.
Ich habe heute versucht, etwas Ähnliches zu tun, in Anlehnung an Hadleys oben veröffentlichte Lösung, und gleichzeitig die Verschachtelung zu verstehen Eval(Eval Expr(Expr()))-Ansatz (an Letzterem wird noch gearbeitet ...).
Nachdem ich ein wenig herumgespielt hatte, fand ich Folgendes:
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(Eval Expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);Gibt mir das gleiche Ergebnis wie dieses aus Hadleys Lösung:
Eval(
Eval Expr(
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);
)
);
Betreff: Tabelle basierend auf der Liste der Spaltennamen teilenHadley, das war genau das, was ich gesucht habe.
Vielen Dank und auch vielen Dank für das Teilen des Beitrags Eval(Eval Expr(Expr())). Das wird mir bei meinen zukünftigen Scripting-Abenteuern nützlich sein!
Betreff: Tabelle basierend auf der Liste der Spaltennamen teilenHallo,
Ich denke, dies ist einer dieser Fälle, in denen Eval(Eval Expr(Expr())) helfen würde.Schauen Sie sich den Code unten an und sehen Sie, ob er das tut, was Sie erhoffen.Auch Hier ist ein Beitrag zu diesem Thema, das diese Art von Methoden erklärt.
Names Default to Here(1);
dt1=Data Table("SD Calculation");
//Get list of Column names
ColList=dt1<<GET column="" names=""></GET>