Usar lista de columnas en fórmulasMe encontré con un "problema" al intentar usar directamente una lista de columnas devuelta desde el cuadro de diálogo de columnas (por ejemplo, {: sexo,: edad: nombre}). Cuando trato de usar esa lista directamente en fórmulas Col (Col Mean, Col Sum...) con byVars, la fórmula no funciona correctamente. Usar la lista con, por ejemplo, la fórmula Sum() funciona bien. ¿Es este el comportamiento previsto y alguien tiene formas más limpias de construir Col Sums a partir de una lista de columnas que los ejemplos que tengo a continuación?
A continuación se muestra el script de ejemplo con las fórmulas Sum() y ColSum(). Hay un par de formas diferentes en las que traté de construir las fórmulas ColSum() pero logré que funcionaran solo con Insertar en con expresiones y EvalParse (que intentaré evitar debido a problemas con la depuración).
Ejemplo:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << New Column("Sum", Numeric, "Continuous", Format("Best", 12), Formula(Sum(:height, :weight)));
listOfCols = {:height, :weight}; //list works here
dt << New Column("SumList", <<FORMULA></FORMULA>
secuencias de comandosRe: Usar lista de columnas en fórmulas¡Nuevamente JMP Discovery Summit Meet the Experts cumple! saltó a Creación de secuencias de comandos para salas de reuniones de automatización y clientes y @EvanMcCorkle tenía una solución mucho más limpia que mi inserción de bucle y análisis de evaluación; s sustituyendo la Lista alrededor de listOfCols con ColSum:
listOfCols = {:height, :age, :sex}; //won't work here
f = Substitute(listOfCols, Expr(list), Expr(ColSum));
Show(f); //f = ColSum(:height, :age, :sex);No estoy seguro de si la forma en que funciona Col Sum() funciona con la lista de columnas, pero esta solución es limpia y simple.
Re: Usar lista de columnas en fórmulasHola @jthi ,
No estoy seguro de si esto es intencionado o no, pero definitivamente está relacionado con los corchetes de la lista, {} y la cantidad de elementos en la lista. Podría reproducir los mismos problemas que describiste.
Creo que su solución para hacer Insertar en es la mejor opción. El Parse puede volverse muy complicado y difícil. Creo que tiene una buena solución con Insertar en y es mejor seguir con eso para solucionar el problema del corchete de lista.
SD