Conteggio condizionale nelle colonneHo una tabella con alcune colonne (> 100). Sto cercando di creare una colonna che conta il numero di colonne in una riga maggiore di 1. Come scriverei una formula per farlo? Di seguito è riportata una piccola immagine di una tabella di esempio.
Sarebbe preferibile se questa fosse solo una formula da inserire in una tabella e non uno script JSL autonomo.
Tabella datiSceneggiaturaRe: Conteggio condizionale su colonneQuesta formula vuole che la tua colonna "calcolo" sia l'ultima nella tabella dei dati e deve essere creata prima di aggiungere la formula. Inoltre questo non verrà aggiornato come le normali formule, quindi dovrai aprire la formula e premere Applica:
Sum(Current Data Table()[Row(), Index(1, N Cols(Current Data Table()) - 1)] > 1)
Re: Conteggio condizionale su colonneEcco un modo:
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)));Re: Conteggio condizionale tra le colonnePer facilitare l'aggiornamento dei dati, puoi aggiungere una delle colonne di input (qui: altezza ) come fittizia nella formula della colonna. Quindi JMP monitorerà questa colonna. Per innescare un aggiornamento, modifica semplicemente un valore in questa colonna.
Inoltre, è possibile inserire la tabella dati "access" e la definizione della colonna come costante .
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 );
)
);