Bucle For para crear columnas con fórmulas de promedio móvilSoy muy nuevo en jmp, estoy intentando pasar de las hojas de cálculo a grandes conjuntos de datos. Estoy intentando crear una serie de columnas para calcular diferentes promedios móviles para una columna de datos (xV-C). Tengo la mayor parte del código funcionando para crear las columnas, pero la fórmula para cada columna creada usa la variable de bucle for (j) en lugar del valor para el bucle for (10, 11, 12...) para cada columna. Creo que necesito hacer algo con Eval y Parse, pero no puedo resolverlo. Esto es lo que tengo hasta ahora:
para(j=10,j<=12,j++,
Nueva columna ("xF-C MA " || Char(j),Numeric,Formula(Col Moving Average( :"xV-C"n, 1, j-1 )))
);
¡Seguro que a alguien le resulta fácil! ¡Agradezco la ayuda!
Automatización y scriptingVentanasRe: Bucle For para crear columnas con fórmulas de promedio móvilBienvenido a la comunidad
Si se especifica una variable en la fórmula, "J", y se modifica su valor en JSL, las columnas con la variable cambiarán a medida que cambie el valor de "J". Para corregir esto, es necesario evaluar el valor de la variable "J" tal como se especifica en la fórmula de JMP.
Eval(EvalExpr()) forzará la evaluación antes de que JMP analice el código
Prueba esto
For( j = 10, j <= 12, j++,
Eval(
Eval Expr(
New Column( "xF-C MA x " || Char( j ),
Numeric,
Formula( Col Moving Average( :"xV-C"n, 1, Expr( j - 1 ) ) )
)
)
)
);
Re: Bucle For para crear columnas con fórmulas de promedio móvilMe gusta usar Eval+EvalExpr pero hay otra opción buena, Eval+Substitute, que a veces puede ser más fácil de leer (¡no siempre!). En tu caso, podría ser algo como esto
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For(j = 10, j <= 12, j++,
Eval(Substitute(
Expr(
dt << New Column("height " || Char(j), Numeric, Formula(Col Moving Average(:height, 1, _lag_)))
),
Expr(_lag_), j - 1
));
);
Buena (antigua) publicación relacionada con este tema Insertar una expresión en otra usando Eval Insert, Eval Expr, Parse y Substitute
Re: Bucle For para crear columnas con fórmulas de promedio móvil¡Perfecto! ¡Gracias!