La suma no aceptará el formato de la lista, así que solo me pregunto de qué otra manera hacer esto. ¡Gracias!
Re: Sumar todas las columnas usando loopDebo agregar que el script inicializa dt y N así:
dt = Current Data Table();
N = N Col( dt );
Sumar todas las columnas usando loopHola a todos, estoy creando una secuencia de comandos bastante larga en la que no sabré qué columnas están presentes en una tabla dada, ya que está creando varias tablas a partir de diferentes conjuntos de datos. Se crea una tabla de resumen con más de 50 columnas, a veces más de 70. Necesito sumar todos los valores en estas columnas, pero no puedo especificar la suma por: Nombre ("Nombre de columna") en caso de que algunas de las categorías estén presentes/falten. Este es el ciclo que estoy tratando de usar:
Current Data Table() << New Column( "Total Die",
formula(
For( j = 1, j <= N, j++,
cols = Column( dt, j ) << getname()
);
Sum( cols );
)
);
La suma no aceptará el formato de la lista, así que solo me pregunto de qué otra manera hacer esto. ¡Gracias!
secuencias de comandosRe: Sumar todas las columnas usando loopSi lo entiendo correctamente, en lugar de crear un bucle, podría explotar 'Tablas> Resumen' y dejar que JMP haga el trabajo:
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));
Si esto es mejor o no, puede depender de qué más esté haciendo su JSL, pero generalmente es bueno usar plataformas JMP, especialmente si se trata de números, incluso los simples.
Re: Sumar todas las columnas usando loopAmpliando un poco su conocimiento, creo que la forma más fácil de manejar el problema es no crear una columna de fórmula, sino crear la columna y luego usar la funcionalidad de JSL usando matrices para realizar 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)] )
);
Re: Sumar todas las columnas usando loopVectorice completamente el cálculo.
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 )
);
Re: Sumar todas las columnas usando loop¡Uy! Lo sentimos, parece que en realidad desea sumar las columnas en filas. Ver, por ejemplo .
Alternativamente, si quieres una fórmula:
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;
(Esta publicación estaba originalmente incompleta).