Hallo zusammen,
Mir ist aufgefallen, dass die Distributionsplattform Spaltenverweise nicht auf die gleiche Weise zu akzeptieren scheint wie beispielsweise Graph Builder.
Ich habe Code, in dem ich im Format Column(dtname, number) auf verschiedene Spalten in einer Datentabelle verweise. Dies ist zum Beispiel ein Code, den ich mit GB mache und der einwandfrei funktioniert:
Graph Builder(
Size( 500, 350 ),
Show Control Panel( 0 ),
Variables(
X( Column( dt_results, NNxcol ) ),
Y( Column( dt_results, NNYCol + N Items( NNXList ) ) ),
Y( Column( dt_results, NNYCol + 1 + N Items( NNXlist ) ), Position( 1 ) ),
Y( Column( dt_results, NNYCol + 2 + N Items( NNXList ) ) )
),
Elements(
Position( 1, 1 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 9 ) )
),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ), Smoother( X, Y, Legend( 11 ) ) ),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( NNYList[NNYCol] || " Stats vs. " || NNXList[NNxcol] )}
),
Dispatch( {}, "Y title", TextEditBox, {Set Text( NNYList[NNYCol] || " Train & Valid" )} )
)
)
Wenn ich jedoch versuche, etwas Ähnliches in der Distribution-Plattform zu tun, passiert nichts, und ich denke, das liegt daran, dass der Aufruf von Continuous Distribution() es nicht mag, auf diese Weise auf eine Spalte zu verweisen. Es scheint mir zu gefallen, auf die Spalte als Spalte (Spaltenname) zu verweisen.
Distribution(
Continuous Distribution( Column( dt_results, NNYCol + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( dt_results, NNYCol + 1 + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( dt_results, NNYCol + 2 + NNcolshift ), Quantiles( 0 ) )
)
Ich möchte Variablen verwenden, wenn ich die Plattform aufrufe, weil sie im Code flexibler ist als eine feste Codierung im Spaltennamen selbst. Irgendeine Idee, warum sich die Distributionsplattform anders verhält oder wie ich die Spalte korrekt referenzieren kann, damit ich die beabsichtigte Ausgabe erhalte?
Alle Gedanken/Kommentare sind willkommen.
Danke!,
DS
Sie können einfach eine Nachricht an Ihre Datentabelle senden und den Tabellenverweis in der Column()-Funktion entfernen.Ich weiß nicht, warum ihm die Syntax des Skripts, das mit Graph Builder funktioniert, nicht gefällt.
dt_results << Distribution(
Continuous Distribution( Column( NNYCol + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( NNYCol + 1 + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( NNYCol + 2 + NNcolshift ), Quantiles( 0 ) )
)
Sie können eine unterhaltsame und verwirrende Syntax wie diese verwenden
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
dist = dt << Distribution(
Continuous Distribution(Column(Column(dt, col1)), Quantiles(0)),
Continuous Distribution(Column(Column(dt, col2)), Quantiles(0))
);
oder dieses
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
Eval(EvalExpr(
dist = dt << Distribution(
Continuous Distribution(Column(Eval(col1)), Quantiles(0)),
Continuous Distribution(Column(Eval(col2)), Quantiles(0))
);
));
Bearbeiten: Eval(EvalExpr()) ist im obigen Skript nicht erforderlich. Ich habe es versehentlich dort gelassen, als ich verschiedene Optionen getestet habe (ich habe mit Name Expr(AsColumn()) herumgespielt).
Oder einfach eines davon:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
Distribution(Continuous Distribution(Column(Eval(col1))));
colList={col1,col2};
Distribution(column(EvalList(colList)));
Weitere Details finden Sie hier:
https://www.pega-analytics.co.uk/blog/handling-lists-of-columns/ (Danke @Ressel 
und hier:
https://community.jmp.com/t5/Discussions/Updating-column-list-box-using-list-stored-in-variable-not/mp/687314/highlight/true#M87301
Die Verwirrung entsteht, weil (bekanntlich) Spalte wird als Name für a verwendet benanntes Argument In Kontinuierliche Verteilung. Viele Jmp-Benutzer werden annehmen, dass es das war Spalte() Funktion und verwenden Sie es entsprechend.
Das Gleiche gilt für Data Table() im Col List Box: Das Aktualisieren des Spaltenlistenfelds mithilfe der in der Variablen gespeicherten Liste funktioniert nicht wie erwartet. Ist das so gemeint?
Hallo zusammen,
Vielen Dank für die schnelle Rückmeldung und Hilfe hierzu. Am Ende entschied ich mich für eine Mischung aus @mmarchandTSI Und @jthi 's zweiter Vorschlag. Leider ist der Vorschlag von @mmarchandTSI funktionierte am Ende nicht von alleine, die Plattform mochte die Variablen für die Spaltennummer in der Column()-Referenz immer noch nicht. Wenn ich dann jedoch ein Eval() für die Zahlenvariablen innerhalb der Column()-Referenz durchgeführt habe, dann hat es ganz gut geklappt. Verwenden Sie also Column(Eval()), as @jthi Und @hogi tat, hat am Ende wie vorgesehen funktioniert.
Danke für die tollen Vorschläge!,
DS