Bedingte spaltenübergreifende ZählungIch habe eine Tabelle mit ziemlich vielen Spalten (>100). Ich versuche, eine Spalte zu erstellen, die die Anzahl der Spalten in einer Zeile zählt, die größer als 1 sind. Wie würde ich dafür eine Formel schreiben? Unten sehen Sie ein kleines Bild einer Beispieltabelle.
Es wäre besser, wenn dies nur eine Formel wäre, die ich in eine Tabelle einfügen könnte, und kein eigenständiges JSL-Skript.
Automatisierung und SkripterstellungBetreff: Bedingte spaltenübergreifende ZählungDiese Formel möchte, dass Ihre „Berechnungs“-Spalte die letzte in der Datentabelle ist und muss vor dem Hinzufügen der Formel erstellt werden. Außerdem wird diese nicht wie normale Formeln aktualisiert, Sie müssen also die Formel öffnen und auf „Übernehmen“ klicken:
Sum(Current Data Table()[Row(), Index(1, N Cols(Current Data Table()) - 1)] > 1)
Betreff: Bedingte spaltenübergreifende ZählungHier ist eine Möglichkeit:
NamesDefaultToHere(1);
// Build a table
nr = 20; // Number of rows
nc = 10; // Number of columns
dt = AsTable(J(nr, nc, RandomNormal(1, 1)));
dt << setName("Above and Below One");
// Find out what columns are in the table
cols = dt << getColumnNames("String");
// Build an expression to be used as the formula:
// Sum the results of an 'if' clause for each column that exists
form = Expr(Add());
for(c=1, c<=NItems(cols), c++,
ifClause = Expr(If(columnTBD > 1, 1, 0));
SubstituteInto(ifClause, Expr(columnTBD), Parse(":"||cols[c]));
InsertInto(form, NameExpr(ifClause));
);
// Inspect the resulting formula
Print(form);
// Add the formula column
fc = dt << NewColumn("Count Above One", Numeric, Ordinal, Formula(NameExpr(form)));Betreff: Bedingtes Zählen über SpaltenUm die Datenaktualisierung zu erleichtern, können Sie eine der Eingabespalten (hier: Höhe ) als Dummy in die Spaltenformel einfügen. Dann überwacht JMP diese Spalte. Um eine Aktualisierung auszulösen, bearbeiten Sie einfach einen Wert in dieser Spalte.
Darüber hinaus können Sie den „Zugriff“ auf die Datentabelle und die Spaltendefinition als Konstanten einfügen.
Open( "$SAMPLE_DATA/Big Class.jmp" );
New Column( "values > 60",
Formula(
As Constant(
dt = Current Data Table();
//cols = Index(4,5);
cols = {"height", "weight"};
);
:height;
Sum( dt[Row(), cols] > 60 );
)
);