JSL para convertir una fórmula a sus resultados.Hola,
Tengo el siguiente código jsl
dt << New Column( "I (%)", (:Mean * 100) );
que toma una columna (Media), la multiplica por 100 y crea una nueva columna llamada I(%) con la fórmula.
No quiero la fórmula sino solo el resultado del cálculo en la nueva columna. ¿Cómo puedo hacer esto?
Muchas gracias.
secuencias de comandosRe: JSL para convertir una fórmula a sus resultadosMuchas gracias.Re: JSL para convertir una fórmula a sus resultados¡Gracias! Muy claro.Re: JSL para convertir una fórmula a sus resultadosMuchas gracias, muy útil.Re: JSL para convertir una fórmula a sus resultadosEsto tal vez se salga un poco del tema y puedo crear una publicación diferente para discutir esto más a fondo...
Aunque la documentación es lo que es para Establecer cada valor (la documentación de JMP no siempre está exactamente en el punto...) Siento que es la forma más fácil de manejar casos como este. Puede usar fácilmente "fórmulas" complicadas con Establecer cada valor sin preocuparse por eliminar las fórmulas más adelante. Con Values(), los cálculos pueden volverse un poco más difíciles de hacer, vea mi ejemplo (definitivamente no soy competente con JSL Matrices, por lo que es muy probable que haya una forma más fácil de hacer lo que hice en mi ejemplo).
Ejemplo con fórmulas, establezca cada valor y valores:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
//With formulas
newCol = dt << New Column("Formula_simple", Numeric, Continuous, Formula(:height*:weight));
newCol << Delete Formula;
newCol = dt << New Column("Formula_ColMin", Numeric, Continuous, Formula(:height*ColMin(:weight, :sex)));
newCol << Delete Formula;
//With Set Each Value
newCol = dt << New Column("SetEach_simple", Numeric, Continuous, Set Each Value(:height*:weight));
newCol = dt << New Column("SetEach_ColMin", Numeric, Continuous, Set Each Value(:height * ColMin(:weight, :sex)));
//With Values
newCol = dt << New Column("Values_simple", Numeric, Continuous, Values((:height << get values) :*</img> (:weight<< get values)));
newCol = dt << New Column("Values_ColMin", Numeric, Continuous, Values(
Summarize(exg = By(:sex), exm = Min(:weight)); //get min values by group
m_val = J(N Rows(dt),1,1);//matrix for values
height_vec = :height << get values;
For(i = 1, i <= N Items(exg), i++, //loop to "fill" matrix for values
tempRows = Loc(:sex << get as matrix, exg[i]);
m_val[tempRows] = height_vec[tempRows] * exm[i];
);
m_val;
));¿Qué hace Establecer cada valor detrás de escena porque parece funcionar bien? ¿Debería actualizarse la documentación para incluir este comportamiento o crear una nueva función para hacer esto? Podría romper bastantes guiones que tiene la gente si se cambiara el comportamiento de Establecer cada valor.
Re: JSL para convertir una fórmula a sus resultadosEse comportamiento es el propósito previsto del mensaje << Establecer cada valor, tal como está documentado.
Re: JSL para convertir una fórmula a sus resultados¡Enfriador! Supuse que cada valor tenía que establecerse en el mismo valor.
Re: JSL para convertir una fórmula a sus resultadosHee es un ejemplo simple usando Establecer cada valor
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dt << new column("times100", numeric, continuous, set each value(:height*100));

Re: JSL para convertir una fórmula a sus resultadosEse mensaje no es útil en este caso. Se utiliza para establecer cada fila de la columna de destino en el mismo valor constante.

Re: JSL para convertir una fórmula a sus resultados¡Fresco!
Re: JSL para convertir una fórmula a sus resultadosNo necesita una fórmula en absoluto. Recomiendo no usar fórmulas de columna al crear secuencias de comandos a menos que desee que los valores cambien dinámicamente después de que finalice la secuencia de comandos. Entonces su caso podría resolverse de esta manera:
dt << New Column( "I (%)", Numeric, Continuous, Values( (:Mean << Get Values) * 100) );
Re: JSL para convertir una fórmula a sus resultadosIntente usar <Re: JSL para convertir una fórmula a sus resultados
La espera (3) es solo para que puedas verla; no se requiere después de <
También puede usar el editor de fórmulas para borrar la fórmula para el mismo efecto.
Re: JSL para convertir una fórmula a sus resultadosNamesDefaultToHere(1);
// Sample table
dt = Open("$SAMPLE_DATA/Big Class.jmp");
// Add a formula column
dt << NewColumn("BMI", Numeric, Continuous, Formula(:weight/(:height^2)));
// Make sure the formula is run
dt << runFormulas;
// Wait a little, then remove the formula
Wait(3);
Column(dt, "BMI") << deleteFormula;