Ich versuche, ein Klassenobjekt zu erstellen, das Methoden und Eigenschaften enthält, die ich bei der Arbeit mit Verteilungsberichten nützlich finde.
Ich habe alles so, wie ich es möchte, wenn ich nicht versuche, den Bericht oder die Datentabelle zu filtern, aber wenn ich versuche, den Bericht anzupassen, treten Probleme auf.
Das Hauptproblem besteht darin, dass nach dem Filtern des Berichts, wenn ich in die Anzeigestruktur gehe, um Werte abzurufen und zu speichern, diese den Filter nicht widerspiegeln.Wenn die Spalte, die ich analysiere, beispielsweise vor dem Filtern einen Mittelwert von 132 und nach dem Filtern einen Mittelwert von 134 aufweist, zeigt der Verteilungsbericht 134 als Mittelwert an, der Anzeigebaum gibt jedoch 132 aus.
Make Distribution = Method({filter={}},
Try(
Column(dt,col) << Set Name("Data");
show(NItems(filter)!=0);
If(
NItems(filter)!=0,
dist = dt << Distribution(
Automatic Recalc( 1 ),
Continuous Distribution( Column( :Data ),
Local Data Filter(
Add Filter(Where(:Data >= filter[0] & :Data<= filter[1]))
)
),
),
dist = dt << Distribution(Automatic Recalc(1),Continuous Distribution(Column(:Data)));
);
rdist = dist << Report;
show(rdist[1]);
tmp = rdist["Summary Statistics"][NumberColBox(1)] << Get As Matrix;
mean = tmp[1];
stdev = tmp[2];
std_err_mean = tmp[3];
up_95_mean = tmp[4];
low_95_mean = tmp[5];
N = tmp[6];
dist_graph = rdist[OutlineBox("Data")][PictureBox(1)];
Column(dt,"Data") << Set Name(col);
,
Throw("Error in Making Distribution: "||char(exception_msg))
);
);Oben ist die Methode dargestellt, bei der ich den Verteilungsbericht erstelle, den lokalen Filter hinzufüge und die Werte der zusammenfassenden Statistik aus dem Anzeigebaum abrufe.
Ich habe auch versucht, eine Routine „Wo auswählen und Zeilen löschen“ zu verwenden, aber die Routine „Wo auswählen“ führt nichts aus, wenn diese Methode in der unten aufgeführten Methode enthalten ist.
Filter Table = Method({filter},
dt << Select Where(Column(dt,col)<FILTER>filter[2]);
dt << Delete Rows;
);</FILTER>Ich mache das, weil ich ziemlich oft verschiedene zusammenfassende Statistiken oder Elemente aus Verteilungsberichten abrufen muss und die Syntax dadurch einfach und leicht zu ändern ist.
Ich habe den vollständigen Kurs diesem Beitrag beigefügt.
Jede Hilfe wäre dankbar.
Hallo,
Ich antworte, weil ich ein ähnliches Verhalten in JMP 13 gesehen habe.Wenn ich einen angehängten Datenfilter hatte, konnte ich Werte für eine Spalte abrufen und festlegen sowie Tabellensortierungen und Tabellenzusammenfassungsmanipulationen durchführen, erhielt aber bei der Zeilenauswahl zufällige Ergebnisse. Meine Lösung bestand darin, die Spaltenwerte als Vektoren abzurufen (die Analyse erforderte numerische Spalten) und loc()-Funktionen zu verwenden. Dann habe ich meine Berechnungen durchgeführt und die Tabellenwerte entsprechend aktualisiert.
Der JMP-Support wurde benachrichtigt. Ich werde sie darauf aufmerksam machen, sich diesen Blog-Beitrag anzusehen, da das von Ihnen beschriebene Verhalten dasselbe zu sein scheint.
@awsmagala ,
Ich würde empfehlen, zwischen der Erstellung der Datentabelle und der Anwendung der Plattform eine kleine Verzögerung durch Warten einzuführen.
Wait(0.1);