Reduzierung von 80 eindeutigen Werten auf 10 eindeutige WerteIch habe eine Spalte in meiner Datentabelle, die über 80 eindeutige (nominale) Textwerte enthält. Ich möchte diese 80 Nominalwerte nehmen und sie in JSL auf 10 reduzieren, indem ich Werte, die nicht zu den Top Ten gehören (nach Häufigkeit des Vorkommens), in einer Gruppe namens „Andere“ zusammenfasse. Was ist der einfachste Weg, dies in JSL zu erreichen? Vielen Dank für Ihre Hilfe!
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige Werte@twillkickers , lautet die Antwort auf Ihre Frage „Ja“. Mit JSL können Sie entweder den Graph Builder oder das Pareto-Diagramm manipulieren, um die gewünschte Anzeige bereitzustellen. Mit der Option „Gepackter Balken“ im Graph Builder erhalten Sie jedoch fast alles, was Sie wollen (mit Ausnahme der Beschriftung für die Gesamtsumme Ihrer Grundursachen). Um diese Summe anzuzeigen, sind, wie bereits erwähnt, einige Manipulationen erforderlich. Bevor Sie entscheiden, ob sich die zusätzlichen Manipulationen lohnen, sollten Sie bedenken, dass es sich bei dieser Summe tatsächlich um redundante Informationen handelt – die relative Balkenhöhe und die Y-Achse vermitteln diese Informationen visuell.
Wenn Sie dennoch die Anzeige der Gesamtsumme für die „anderen“ Spalten benötigen, können Sie hier einen Ansatz wählen (immer noch am Beispiel von Nicardipine.jmp):
Verwenden Sie das zuvor bereitgestellte Verteilungsplattform-Skript, um eine Spalte für die Ursachenebenen (1–9 und 10+) zu erstellen.
Erstellen Sie eine Formelspalte für Ihre neuen Kategorien, z. B.:
If( :Level Investigator Name < 10, :Investigator Name, "Other")
Verwenden Sie Graph Builder, um ein Balkendiagramm für die neuen Kategorien zu erstellen, sortiert nach der Spalte „Ebenen“ (vorausgesetzt, Sie möchten die Kategorie „Andere“ auf der rechten Seite haben. Andernfalls klicken Sie einfach mit der rechten Maustaste auf die Achse und wählen Sie „Nach Anzahl sortieren“, um zu sehen, wo „Andere“ Platz findet innerhalb Ihrer Top 9 Ursachen):
Graph Builder(
Size( 869, 318 ),
Show Control Panel( 0 ),
Variables(
X(
:New Investigator Name,
Order By(
:Level Investigator Name,
Ascending,
Order Statistic( "Sum" )
)
)
),
Elements( Bar( X, Legend( 3 ), Label( "Label by Value" ) ) )
);
Alle diese Aktionen können zusammengefügt werden, um ein Skript zu erstellen. Wenn Sie dabei Hilfe benötigen, empfehle ich Ihnen, die Hilfe->Bücher->Skriptanleitung und den Hilfe->Skriptindex zu konsultieren und nach „Neue Spalte“ zu suchen, um die Syntax zum Erstellen einer neuen Formelspalte in Ihrer Datentabelle zu erhalten.
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige Werte@jerry_cooper Danke. Ich habe eine Frage zum Pareto-Plot. Kann JSL automatisch alle anderen als die zehn häufigsten Ursachen in einer „Sonstige“-Leiste gruppieren, anstatt dass ich die Ursachen, die ich gruppieren möchte, einzeln angeben muss? Wenn ich den Graph Builder anweise, alles außer den ersten 10 Werten zu gruppieren, sieht der JSL-Code am Ende so aus:
Pareto Plot(
Cause( :Cause ),
Show **bleep** Percent Curve( 0 ),
Combine Causes(
{"Cause1","Cause2","Cause3","Cause4","Cause5","Cause6"}
),
SendToReport(
Dispatch( {"Plots"}, "102", ScaleBox, {Max( 4512.67559361611 )} ),
Dispatch( {"Plots"}, "106", ScaleBox, {Max( 100.059325800801 )} ),
Dispatch( {"Plots"}, "Pareto Report", FrameBox, {Frame Size( 1061, 702 )} )
)
);Für meine Bewerbung kann sich die Priorität der Ursachen von Zeit zu Zeit ändern. Ich möchte, dass JSL die zehn häufigsten Ursachen bei jeder Generierung des Pareto-Diagramms automatisch neu berechnet.
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige Werte@twillkickers , Sie haben Recht, das Diagramm „Gepackte Balken“ zeigt nur die Werte für die primären Balken an. Wenn die Werte angezeigt werden müssen, besteht der einfachste Ansatz möglicherweise darin, die Option „Pareto-Diagramm“ zu verwenden (beachten Sie, dass ich die kumulative Prozentkurve deaktiviert und im Menü „Ursachen rotes Dreieck“ Beschriftungen und eine einheitliche Farbe ausgewählt habe):
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige Werte@jerry_cooper , Vielen Dank für Ihre Hilfe! Gibt es bei Verwendung des Balkenstils „Gepackt“ eine Möglichkeit, den Balken mit den anderen Kategorien zu beschriften? Meine Mengenangaben für jeden Riegel erscheinen nur auf den unverpackten Riegeln. Vielen Dank für Ihre Hilfe.
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige WerteHallo @twillkickers ,
Ich bin mir nicht sicher, was das ultimative Ziel Ihrer Anfrage ist, aber wenn es darum geht, ein Diagramm im Pareto-Stil zu erstellen, können Sie dies erreichen, ohne Skripte zu erstellen oder eine neue Spalte zu erstellen.
Wenn Sie Version 14 haben, führt das neue „Packed Bars“-Element in Graph Builder das aus, was Sie beschreiben. Ziehen Sie mithilfe der Datentabelle „Nicardipine.jmp“ aus dem Verzeichnis „Sample Data“ die Spalte „Investigator Name“ auf die Y-Rolle, wählen Sie dann „Packed“ als Balkenstil aus, geben Sie 9 in die „Packed Primaries“ ein und wählen Sie schließlich „Separate Stack“ aus das Dropdown-Menü „Gepackte Platzierung“:

Eine weitere Option, insbesondere für Versionen vor Version 14, ist die Auswahl des Pareto-Diagramms aus dem Menü „Qualität und Prozess“. Wählen Sie im Menü „Rotes Dreieck“ im Diagramm den Menüpunkt „Ursachen=>Ursachen kombinieren“, wählen Sie das Optionsfeld „Letzte Ursachen“ und geben Sie 71 in das Zahlenfeld ein:

Wenn Sie wirklich möchten, dass ein Skript eine neue Spalte mit den Ebenen 1–10 erstellt, ist die folgende Möglichkeit (mithilfe der Distributionsplattform) eine Möglichkeit. Ersetzen Sie einfach gegebenenfalls Ihre Datentabellen- und Spaltennamen:
Names Default to Here( 1 );
dt = Open("$Sample_Data/Nicardipine.jmp");
dist = Distribution( Nominal Distribution( Column( :Investigator Name ) ) );
dist << Order By( Count Descending );
dist << Save( Level Numbers );
dist << Close Window;
therows = dt << Get Rows Where( :Level Investigator Name >= 10 );
dt:Level Investigator Name[ therows ] = 10;
Hoffe das hilft.
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige Werte@twillkickers ,
Es gibt viele Möglichkeiten, das zu tun, was Sie wollen. Wie tabellarisch, Verteilung oder Zusammenfassung. Ich zeige Ihnen, wie Sie mit dem summarischen Ansatz umsetzen
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Get frequency
dt1 = dt << Summary(
Group( :name ),
Freq( "None" ),
Weight( "None" )
);
// Let us assume weight column in this data table represents the frequency in your case
dt2 = dt1 << Sort(By(:N Rows),Order(descending));
// Select only top 10
dt2 << Select Rows(Index(1,10));
// If you want to hide and exclude the remaining
dt2 << Invert Row Selection << hide and exclude ;
// OR
// If you want to delete the rows
dt2 << Delete Rows; Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige WerteWie erstelle ich eine Spalte, die die Häufigkeit der eindeutigen Textwerte auflistet?
Betreff: Reduzierung von 80 eindeutigen Werten auf 10 eindeutige Werte@twillkickers ,
Verfügen Sie auch über eine Spalte, in der die Häufigkeit oder Häufigkeit jedes einzelnen eindeutigen Textwerts aufgeführt ist? Wenn Sie dies nicht tun, besteht der erste Schritt darin, diese Daten in Ihre Datentabelle aufzunehmen. Sobald dies verfügbar ist, können Sie die Spalte in absteigender Reihenfolge sortieren und die obersten 10 Zeilen auswählen. So würde ich es machen:
// Open Sample Data Table
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Let us assume weight column in this data table represents the frequency in your case
dt1 = dt << Sort(By(:weight),Order(descending));
// Select only top 10
dt1 << Select Rows(Index(1,10));
// If you want to hide and exclude the remaining
dt1 << Invert Row Selection << hide and exclude ;
// OR
// If you want to delete the rows
dt1 << Delete Rows;