Dividir tabla según la lista de nombres de columnasHola comunidad JMP, espero que puedan ayudarme con este problema:
He creado un script que permite a los usuarios calcular valores SD de 1x, 2x y/o 3x para varias concentraciones de muestra con un factor determinado (que se ingresará). Los valores SD 1x, 2x y/o 3x se pueden elegir mediante 3 casillas de verificación. Esta primera parte funciona perfectamente.
Según la cantidad seleccionada de casillas de verificación, la tabla de datos resultante proporciona una cantidad variable de columnas que me gustaría dividir en una nueva tabla de datos.
Intenté crear un segundo script que divida la tabla de datos en función de todas las columnas SD presentes (siempre comenzando desde la columna 3), pero sin éxito. Este es mi guión hasta ahora:
Names Default To Here( 1 );
dt1 = Data Table( "SD Calculation" );
//Get list of Column names
ColList = dt1 << Get Column Names();
//Split dt1 based on ColList
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split( ColList[3] ),
Remaining Columns( Drop All ),
Sort by Column Property
);
La tabla dividida resultante se ve así y le faltan la mayoría de los datos:

Así es como debería verse (solo puedo lograr esto especificando todos los nombres de las columnas; sin embargo, no todas las columnas estarán presentes en cada tabla (se basa en la selección del usuario):

Cuando se eligen todos los cálculos de DE (±1-3 DE para 5 concentraciones de muestra), deben estar presentes 30 columnas.
El objetivo de mi guión:
Los valores de nomRP son: 50, 71, 100, 141 y 200 y se pueden calcular valores de 1 a 3 veces la DE para cada uno de esos valores de nomRP. Todos los resultados calculados deben dividirse en una nueva tabla de datos. Con estos datos quiero construir una figura en Graph Builder que muestre rangos basados en los valores de SD calculados.
Atentamente,
Pim.
-Editar: Se agregó la tabla "Cálculo SD".
Combinación y limpieza de datosRe: Dividir tabla según la lista de nombres de columnas¡Muchas gracias Pim/Hadley por la pregunta/respuesta sobre este tema!
Me doy cuenta de que esta es una publicación antigua, pero quería dejar una migaja para cualquiera que venga después.
Estaba tratando de hacer algo similar a esto hoy, siguiendo las líneas de la solución de Hadley publicada anteriormente, y al mismo tiempo entender el anidado Enfoque Eval(Eval Expr(Expr())) (aún estoy trabajando en este último...).
Después de jugar un poco, encontré que esto:
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(Eval Expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);Me da el mismo resultado que este de la solución de Hadley:
Eval(
Eval Expr(
dt2 = Data Table( "SD Calculation" ) << Split(
Split By( :nomRP ),
Split(expr(ColList)),
Remaining Columns( Drop All ),
Sort by Column Property
);
)
);
Re: Dividir tabla según la lista de nombres de columnasHadley, esto era exactamente lo que estaba buscando.
Muchas gracias y también gracias por compartir el post sobre Evaluación(Eval Expr(Expr())). ¡Esto será útil en mis futuras aventuras de scripting!
Re: Dividir tabla según la lista de nombres de columnasHola,
Creo que esta es una de esas ocasiones en las que Eval(Eval Expr(Expr())) ayudaría.Eche un vistazo al código a continuación y vea si hace lo que espera.También aquí hay una publicación sobre este tema que explica este tipo de métodos.
Names Default to Here(1);
dt1=Data Table("SD Calculation");
//Get list of Column names
ColList=dt1<<GET column="" names=""></GET>