Übergeben Sie Elemente aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleIch erstelle mehrere Diagramme mit berechneten Statistiken. Ich möchte bestimmte berechnete statistische Parameter weitergeben, z. B. Minimum, Median und Maximum von Quantile und Std Dev von Zusammengefasste Statistiken zu bestimmten Koordinaten in einer gespeicherten Datentabelle mit JSL.
Ich möchte zum Beispiel weitergeben
- minimales Quantil bis Zeile 5, Spalte 7
- Median zu Zeile 5, Spalte 8
- maximales Quantil bis Zeile 5, Spalte 9
- Std Dev zu Zeile 5 Spalte 10.
zu meiner gespeicherten Datentabelle. Wie kann man dies mit JSL erreichen?
(die Koordinaten sind in der gespeicherten Datentabelle zunächst leer)
DatentabelleGrafikSkriptingBetreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleIch denke Datentabellen-Subskription kann dir dabei helfen
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt[10,3] = "AAAAAAAAAAAAAA";Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleHi @Neo
sehen Sie, ob Sie aus diesem Skript herausholen können, was Sie brauchen
Names Default To Here( 1 );
// set up a table to accept the results
resultsdt = New Table( "Results Table",
Add Rows( 20 ),
New Column( "Column 1" ),
New Column( "Column 2" ),
New Column( "Column 3" ),
New Column( "Column 4" ),
New Column( "Column 5" ),
New Column( "Column 6" ),
New Column( "Min", Numeric ),
New Column( "Median", Numeric ),
New Column( "Max", Numeric ),
New Column( "SD", Numeric )
);
// Open Data Table: Big Class.jmp
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Launch platform: Distribution
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
// Extract min median max and SD
resultsdt[5, 7] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = output[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
Wenn es darum geht, Zahlen aus der Ausgabe zu extrahieren, muss man vorsichtig sein. Korrekte Verweise auf Speicherorte können sich ändern, wenn die Ausgabe aufgrund von Präferenzen unterschiedlich ist oder nur mehrere Ausgaben in einem Fenster enthält.
lass es uns wissen, ob es funktioniert.
ron
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleVielen Dank @ron_horne . Ich denke, das würde funktionieren. Bevor ich dies jedoch an meinem eigentlichen Problem ausprobiere, habe ich eine Frage. Muss die "Ergebnistabelle" geöffnet werden, bevor die Werte an sie weitergegeben werden können?
In meinem Fall ist die "Ergebnistabelle" eine gespeicherte Datei und ich hatte nicht vor, sie zu öffnen, es sei denn, es ist sonst nicht möglich, Werte an sie weiterzugeben.
(Ich muss den Rest meines Codes ändern, wenn ich meine "Ergebnistabelle" in der Instanz öffnen muss, wenn Werte an sie weitergegeben werden)
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten Datentabelle
Hi @Neo
Nach meinem besten Wissen gibt es in JMP keine Möglichkeit, Daten in eine Zelle einer geschlossenen Tabelle zu setzen.
Falls es hier noch jemand besser weiß, lass es uns bitte wissen.
Vielleicht können Sie als Vermittler eine weitere Tabelle öffnen, um die Informationen dort zu behalten, während Sie noch sammeln, und erst am Ende die endgültige Ergebnistabelle öffnen.
ron
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten Datentabelle@ron_horne . Vielen Dank. Ich habe einige Zeit gebraucht, um umzucodieren, damit ich es haben kann "Ergebnistabelle", die für Werte aus berechneten Statistiken geöffnet ist, könnte an diese weitergegeben werden.
Ich habe mit Ihrem Vorschlag begonnen und habe eine Frage. Warum funktioniert das nicht?
distb = Distribution( Continuous Distribution( Column( :height ) ) ) ;
// Extract min median max and SD
resultsdt[5, 7] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 11 ); // min
resultsdt[5, 8] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 6 ); // median
resultsdt[5, 9] = distb[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << get( 1 ); // max
resultsdt[5, 10] = distb[Outline Box( "height" ), Outline Box( "Summary Statistics" ), Number Col Box( 1 )] << get( 2 ); // Std dev.
und warum muss das sein?
output = Report( dist = dt << Distribution( Continuous Distribution( Column( :height ) ) ) );
Ich habe mehrere Verteilungsdiagramme, denen ich leicht einen Namen wie distb1, distb2, ... zuweisen kann, aber wenn ich es brauche?
output = Report( dist = dt << Distribution( ..... ) );
Ich muss überprüfen, wie sich dies auf den Rest meines Codes auswirkt.
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleHallo Neo,
Ihr Verweis auf distb funktioniert nicht Sinus distb ist keine Berichtsschicht von irgendetwas. es ist die Analyseschicht. In JMP gibt es einen Unterschied zwischen ihnen.
Um etwas aus der Ausgabe zu extrahieren, müssen Sie explizit auf die Berichtsschicht verweisen.
Sieh dir das an: https://community.jmp.com/t5/JSL-Cookbook/Extract-Statistics-from-an-Analysis-into-a-Report/ta-p/41547
Wenn Sie mehrere Ausgaben haben, müssen Sie diese richtig benennen und definieren, um sicherzustellen, dass Sie die gewünschten Werte erhalten.
lass es uns wissen, ob es funktioniert. andernfalls sollten Sie einige Dateien und Skripte von dem Punkt aus bereitstellen, der Ihnen Probleme bereitet.
alles Gute,
ron
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleVielen Dank @ron_horne . Lassen Sie mich versuchen, einen Überblick über das zu geben, was ich versuche. Mein Hauptskript hat den folgenden (hier vereinfachten) Ablauf.
Öffnen Sie eine Datentabelle (und nennen Sie sie dt ) und dann Verteilungsdiagramme für mehrere Spalten darin mit einer Funktion zeichnen
getDistribution ("ColName", "LSL", "USL", "other input parameters")
Jedes resultierende Verteilungsdiagramm hat "Quantile", "Zusammenfassungsstatistik" und "Fähigkeitsanalyse (mit geschlossenem Umriss)".
Der nächste Teil des Hauptskripts besteht darin, eine Tabelle zu erstellen (nennen wir es Ergebnisse ) mit mehreren Zeilen und Spalten, in denen ich Werte der berechneten Statistik übergeben muss, wie im ursprünglichen Beitrag angegeben.
Folgendes funktioniert jedoch nicht.
output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 6 ), Number Col Box( 11)] << get( 1 ); // max
Ich habe sichergestellt, dass die Zahlen in Table Box () und Number Col Box () korrekt sind. Ich erhalte folgenden Fehler
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 6 ), Number Col Box( 11 )] << /*###*/get( 1 ) /*###*/
Wo liege ich falsch?
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleHi @Neo ,
Wenn ich Ihr Problem richtig verstehe, müssen Sie auf die Nummerierung und die Adressen achten. Sobald Sie Namen von Gliederungsfeldern verwenden, beginnt die Nummerierung von Tabellenfeldern und Nummernspaltenfeldern bei 1.
Versuchen Sie daher Folgendes:
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
Wenn Sie Number Col Box (11) verwenden möchten, versuchen Sie Folgendes:
resultsdt[5, 9] = Output[Number Col Box( 11)] << get( 1 ); // max
hoffe das klappt jetzt.
Im Allgemeinen gibt es viel schickere Möglichkeiten, das Skript dazu zu bringen, die Position der interessierenden Werte mithilfe von xpath () oder Mustervergleichen wie in diesem Link zu finden: http://www.pega-analytics.co.uk/blog/oneway-advisor-step-3/
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten DatentabelleDanke noch einmal @ron_horne , aber beide funktionieren nicht und geben mir den gleichen Fehler.
Sagen Sie, dass die folgende Verwendung richtig und gültig ist? Beachten Sie, dass es nicht plotten die Verteilung, wenn sie wie unten verwendet wird (übrigens verstehe ich die Funktion nicht dist in dist=dt ?)
Output = Report( dist = dt << getDistribution("ColName", "LSL", "USL", "other input parameters") );
und der Fehler (aus Log kopiert)
Send Expects Scriptable Object{8} in access or evaluation of 'Send' , Output[Outline Box( "height" ), Outline Box( "Quantiles" ),
Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/Not subscriptable value{8} in access or evaluation of 'Assign' , resultsdt[5, 9] = /*###*/Output[Outline Box( "Pass Distribution" ),
Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1 )] << /*###*/get( 1 ) /*###*/
/*###*/
Ich erhalte aufgrund meiner folgenden Aussage (auch wenn Ihr Vorschlag unten)
resultsdt[5, 9] = Output[Outline Box( "height" ), Outline Box( "Quantiles" ), Table Box( 1 ), Number Col Box( 1)] << get( 1 ); // max
Wenn ja, möchte ich einen einfachen Test machen und einen einfacheren Test an resultsdt übergeben. Gibt es einen einfachen Test, den ich machen kann, um zu testen, ob ich überhaupt etwas davon bekomme? Ausgabe zur Datentabelle Ergebnisse ?
Betreff: Übergeben von Elementen aus berechneten Statistiken an bestimmte Koordinaten in einer gespeicherten Datentabelle@ron_horne . Das Folgende sollte helfen, die Dinge etwas mehr zu klären, da es meinem tatsächlichen Problem sehr ähnlich ist. Ich erhalte das Verteilungsdiagramm über eine Funktion.
Names Default To Here (1);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
getDistChart = Function({ColName, _LSL, _USL}, {distChart},
New Window(""||ColName||" distribution",
Distribution(
Stack( 1 ),
Continuous Distribution(
Column(As Column (ColName) ),
Horizontal Layout( 1 ),
Vertical( 0 ),
Capability Analysis( LSL(_LSL ), USL(_USL) )
),
SendToReport(
Dispatch(
{},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 1 ), {Font( "Segoe UI", 7, "Plain" )} ),
DispatchSeg( LabelSeg( 2 ), {Font( "Segoe UI", 7, "Plain" )} )}
)
)
);
);
return(distChart);
);
dist = dt << getDistChart ("weight", 55, 185);
Mir scheint, dass die letzte Zeile nicht das tut, was sie zum Extrahieren von Werten aus der Verteilung tun soll, da keine Verteilung überhaupt gezeichnet wird. Die Frage ist nun, wie man Werte berechneter Statistiken erhält, wenn die Verteilung über eine Funktion wie meine oben dargestellt wird. Vielleicht ist eine Funktion keine Nachricht und kann daher nicht mit << an ein Objekt gesendet werden?
Jede Hilfe wäre sehr nützlich, da ich noch JMP lerne.