Bedingte spaltenübergreifende ZählungIch habe eine Tabelle mit mehreren 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 vorzuziehen, wenn dies nur eine Formel wäre, die ich in eine Tabelle einfügen könnte, und kein eigenständiges JSL-Skript.
DatentabelleSkriptingRe: 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)));