J'ai un tableau avec pas mal de colonnes (>100). J'essaie de créer une colonne qui compte le nombre de colonnes d'une ligne supérieures à 1. Comment écrirais-je une formule pour faire ça ? Ci-dessous, une petite image d'un exemple de tableau.
Il serait préférable qu'il s'agisse simplement d'une formule que je puisse déposer dans une table et non d'un script JSL autonome.
Voici une façon :
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)));