La somma non accetterà il formato dell'elenco , quindi ti stai solo chiedendo in che altro modo farlo? Grazie!
Ri: sommare tutte le colonne usando il cicloDovrei aggiungere che lo script inizializza dt e N in questo modo:
dt = Current Data Table();
N = N Col( dt );
Sommando tutte le colonne usando il cicloCiao a tutti, sto costruendo uno script abbastanza lungo in cui non saprò quali colonne sono presenti in una determinata tabella poiché crea più tabelle da diversi set di dati. Viene creata una tabella di riepilogo con più di 50 colonne, a volte più di 70. Devo sommare tutti i valori in queste colonne, ma non posso specificare la somma per :Name("Column Name") nel caso in cui alcune delle categorie siano presenti/mancanti. Questo è il ciclo che sto cercando di usare:
Current Data Table() << New Column( "Total Die",
formula(
For( j = 1, j <= N, j++,
cols = Column( dt, j ) << getname()
);
Sum( cols );
)
);
La somma non accetterà il formato dell'elenco , quindi ti stai solo chiedendo in che altro modo farlo? Grazie!
ScriptingRi: sommare tutte le colonne usando il cicloSe ho capito bene, invece di creare un ciclo potresti sfruttare "Tabelle> Riepilogo" e lasciare che JMP faccia il lavoro:
NamesDefaultToHere(1);
// Get some data
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
// Get all the numeric columns
cols = dt << getColumnNames("Numeric");
// Get all the column means
dt2 = dt << Summary(Mean(cols));
Se questo è meglio o meno potrebbe dipendere da cos'altro sta facendo il tuo JSL, ma in genere è bene usare le piattaforme JMP, specialmente se sono coinvolti i numeri, anche quelli semplici.
Ri: sommare tutte le colonne usando il cicloAllungando un po 'le tue conoscenze, penso che il modo più semplice per gestire il problema sia non creare una colonna formula, ma piuttosto creare la colonna e quindi utilizzare la funzionalità di JSL utilizzando le matrici per eseguire la magia.
Names Default To Here( 1 );
dt = Current Data Table();
N = N Col( dt );
dt << New Column( "new" );
For Each Row(
dt:new = Sum( dt[Row(), index(1,ncols(dt)-1)] )
);
Ri: sommare tutte le colonne usando il cicloVettorizza completamente il calcolo.
Names Default To Here( 1 );
dt = Current Data Table();
n = N Col( dt );
vals = (dt << Get As Matrix) * J( n, 1, 1);
dt << New Column( "new", "Numeric", "Continuous",
Values( vals )
);
Ri: sommare tutte le colonne usando il cicloOps! Spiacenti, sembra che tu voglia effettivamente sommare tra le colonne per riga. Vedere, Per esempio .
In alternativa, se vuoi una formula:
NamesDefaultToHere(1);
// How many columns in the table?
nc = RandomInteger(2, 20);
// Build the table with some random data
dt = NewTable("Sum Columns", << addMultipleColumns("Col ", nc, Numeric));
for(c=1, c<=nc, c++, Column(dt, c) << setFormula(RandomNormal()));
dt << addRows(10);
dt << runFormulas;
// Start here with the current data table
dt2 = CurrentDataTable();
cols2 = dt2 << getColumnNames("Numeric");
// Add the row-wise sum as a new formula column
afc = Expr(dt2 << newColumn("Sum over Columns", Numeric, Continuous, Formula(Sum(colsTBD))));
SubstituteInto(afc, Expr(colsTBD), Eval(cols2));
afc;
(Questo post era originariamente incompleto).