Ist es möglich, ein assoziatives Array als Tabellenvariable zu erstellen und dann gespeicherte Werte in einer Spaltenformel zu verwenden?
Ich habe eine Reihe verwandter Variablen, die ich im Rahmen einer laufenden Analyse bearbeiten möchte. Diese Variablen werden dann wie eine Match- Funktion in einer Spaltenformel verwendet.
Zum Beispiel:
- Erstellen Sie Tabellenvariablenzählungen und setzen Sie den Wert auf ["a" => 10, "b" => 3, "c" => 1] .
- Auf zählt wird dann durch eine Spaltenformel verwiesen, etwa :Anzahl[:Spalte] . Dabei ist :Spalte eine Zeichenspalte mit den Werten „a“, „b“ oder „c“.
Ist das möglich? Ich verwende JMP 18.2.1.
Ich denke, das hier erfüllt Ihre Frage:
New Table( "Untitled",
Add Rows( 3 ),
New Table Variable( "abc", "[\!"a\!"=>1, \!"b\!"=>2, \!"c\!"=>4]" ),
New Column( "Column 1",
Numeric,
"Nominal",
Format( "Best", 9 ),
Formula(
c_abc = As Constant( Eval( Parse( :abc ) ) );
c_abc["c"];
),
Set Selected
)
)
Beachten Sie, dass die Tabellenvariable nur Text ist und daher analysiert und ausgewertet wird. Die Funktion AsConstant sorgt dafür, dass die gesamte Spalte nur einmal analysiert und ausgewertet wird, sodass dies nicht zu ineffizient ist.
Alternativ können Sie für jedes Element des assoziativen Arrays eine separate Tabellenvariable verwenden. Dies ist zwar einfacher zu bearbeiten, erzeugt aber keinen isolierten Namespace wie das assoziative Array.
Alternativ können Sie benutzerdefinierte Spalteneigenschaften verwenden, wenn die Namen Spaltennamen sein sollen. Diese sind möglicherweise schwieriger zu finden und zu bearbeiten. Im Gegensatz zur reinen Texttabellenvariable enthalten sie auch Ausdrücke:
dt=New Table( "Untitled",
New Column( "Column 1",
Set Property( "xxxxx", ["a"=>42,"adfasdfasdf"=>77] )
)
);
(dt:column1<
<GETPROPERTY></GETPROPERTY>
<BR />
Craige hat gute Möglichkeiten dafür bereitgestellt. Hier ist ein Wunschtipp für kompliziertere Datentypen für Tabellenvariablen. Wir wollen kompliziertere Datentypen für Tabellenvariablen verwenden als nur Text und Zahlen.
Danke @Craige_Hales , Ihre Lösung funktioniert großartig.
Danke @jthi , ich habe diesen Vorschlag positiv bewertet.