Ich fasse eine Spalte häufig durch eine Kombination anderer kategorialer Spalten mithilfe einer Formelspalte zusammen.Beispielsweise möchte ich in den Beispieldaten für Waschmittel möglicherweise die durchschnittliche Anzahl für jede Kombination aus Weichheit und Temperatur wissen. Im Folgenden finden Sie drei Methoden hierfür. Welche ich verwende, hängt von der Größe der Datentabelle und meiner Zielgruppe ab.Gibt es einen einfacheren Weg?
Aufgrund von Portabilitätsproblemen schrecke ich vor einem Add-In zurück, das eine benutzerdefinierte Funktion „Col Mean by Multiple Columns()“ enthält.
Tabulieren
Erstellen Sie mithilfe von Tabulate zusammenfassende Statistiken in einer neuen Tabelle und verknüpfen Sie die Ergebnisse dann mit der ursprünglichen Datentabelle.
Vorteil: Einfache Erstellung sehr komplexer zusammenfassender Statistiken.
Nachteil: Nicht live, die Daten müssen aktualisiert werden, wenn sich eine referenzierte Spalte während einer Analyse ändert. Benutzer haben keine Möglichkeit, die Datenquelle zu verfolgen.
Binning-Formel
Erstellen Sie eine Binning-Formel und verwenden Sie dann das zweite Argument der Funktion Col Mean(), um diese Bin zu referenzieren.
Vorteil: Einfach einzurichten und für Benutzer relativ einfach zu befolgen.
Nachteil: Erstellt zusätzliche Spalten, die die Datentabelle überladen und außer dieser Formel keinen Nutzen haben, insbesondere wenn viele Zusammenfassungsspalten erstellt werden.
dt = Open( "$sample_data/Detergent.jmp" );
//binning formula
dt << New Column(
"Bin by Temp and Softness",
Character,
"Nominal",
Formula( :softness || "-" || :temperature )
);
//summary statistic
dt << New Column(
"Mean Count by Temp and Softness Binned",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Col Mean( :count, :Bin by Temp and Softness) )
);
Identifizieren Sie Behälter und berechnen Sie zusammenfassende Statistiken mithilfe von JSL innerhalb einer Formel
Identifizieren Sie ähnliche Zeilen in der Datentabelle und berechnen Sie dann die zusammenfassende Statistik für diese Daten.Ich vermute, dass JMP mit dieser Methode keine Ergebnisse zwischenspeichert, sodass die gesamte Tabelle für jede Zeile neu ausgewertet wird. Bei großen Datentabellen ist es auf jeden Fall langsam.
Pro: Jede Menge Flexibilität
Nachteile: Langsame Berechnungen, für Benutzer sehr schwer verständlich.
//summary statistic by bin
dt << New Column(
"Mean Count by Temp and Softness Direct",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
matches = Function( {a, b},
out = {};
For( i = 1, i <= N Items( a ), i++,
found = "no";
For( j = 1, j <= N Items( b ), j++,
If( a[i] == b[j],
found = "yes"
)
);
If( found == "yes",
out = Insert( out, a[i] )
);
);
out;
);
soft = Loc( :softness << get values(), :softness );
temp = Loc( :temperature << get values(), :temperature );
Mean( (:count << get values())[matches( soft, temp )] );
)
);Super, ich bin froh, dass das hilft! Ich hätte erwähnen sollen, dass man in neueren Versionen von JMP (ich glaube seit JMP 11) mehrere Spaltenparameter direkt in ColMean() haben kann. Anstatt also zu verketten, könnten Sie Folgendes haben:
Col Mean( :count, :softness, :temperature )
Ich bin so daran gewöhnt Zusammenfassend lässt sich sagen, dass ich das immer noch mache.Alte Gewohnheiten sind schwer abzulegen 
Darüber hinaus können Sie in JMP 12 und höher mit Instant Formulas in der Datentabelle diese Spalten in der Tabelle auswählen, mit der rechten Maustaste auf eine ihrer Überschriften klicken und „Neue Formelspalte“ > „Gruppieren nach“ auswählen.

Wählen Sie dann die Zählspalte aus, klicken Sie mit der rechten Maustaste auf die Überschrift und wählen Sie „Neue Formelspalte“ > „Aggregat“ > „Mittelwert“.

Dadurch wird die Formel automatisch für Sie entworfen. Sehr freundlich für Ihre neuen Benutzer.
Das ist perfekt und so offensichtlich, wenn man es einmal darauf hinweist.
Danke!
Hallo @ich h ,
Ich ertappe mich dabei, dass ich genau das ziemlich oft mache. Eine Möglichkeit, die für mich funktioniert, besteht darin, eine Spaltenformel wie Col Mean(:column, byvariable) zu verwenden, und für den zweiten Parameter verwende ich direkt eine Verkettung der beiden kategorialen Spalten (anstatt zusätzliche Spalten in der Tabelle zu erstellen). Für das von Ihnen erwähnte Waschmittelbeispiel wäre dies:
Col Mean( :count, :softness || :temperature )
Entspricht dies Ihren Anforderungen oder suchen Sie noch etwas anderes?
@julianisch