¿Cómo hacer un script general / variable para dividir una tabla de datos y realizar cálculos?Rutinariamente realizo los mismos cálculos y manipulación de tablas de datos y estoy interesado en automatizar eso con un script.
Los pasos generales son algo como:

- Tabla dividida (columna dividida "valor" por columna "atributo")> genera una tabla nueva
- Generar una nueva columna (C) = columna A + columna B
- Generar nueva columna (D) = columna A / columna C

Sin embargo, cada tabla tiene un número diferente de filas y valores diferentes. Cuando hago clic en estas funciones y examino el script generado por JMP, el número de filas y valores de cada columna está codificado. ¿Cómo puedo hacer que estos sean completamente variables para poder ejecutar el script en nuevas tablas de datos de cualquier tamaño?
Hasta ahora, tengo una secuencia de comandos que se parece a esto, pero le solicita el número de filas y, a continuación, genera una tabla vacía. ¡Me está costando mucho encontrar documentación, por lo que se agradece cualquier ayuda!
New Table( "split table",
Add Rows(),
New Script(
"Source",
Data Table() <<
Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property ) ),
New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) ),
New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) ),
New Column( "C", Numeric, "Continuous", Format( "Best", 12 ), Formula( :Name( "A" ) + :Name( "B" ) ) ),
New Column( "D", Numeric, "Continuous", Format( "Percent", 12, 0 ), Formula( :Name( "A" ) / :Name( "C" ) ) ) )
Re: ¿Cómo hacer un script general / variable para dividir una tabla de datos y realizar cálculos?Hola Jim,
Lo siento por la tabla de datos. Parece que funciona bien en mi computadora, así que simplemente lo he vuelto a cargar.
Probé su secuencia de comandos y funciona, excepto por una cosa: la creación de las columnas "fecha", "A" y "B" son redundantes, porque esas columnas se transfieren a la nueva tabla mediante la función de tabla dividida. Así que el script se vuelve aún más simple y funciona perfectamente:
Names Default To Here( 1 );
// Create a pointer variable to be able to
// reference the current active data table
dt = Current Data Table();
// Create the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add new columns to the split data table
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);
Muchas gracias!
Re: ¿Cómo hacer un script general / variable para dividir una tabla de datos y realizar cálculos?1. Su tabla de datos adjunta está dañada. Lo abrí con un editor de texto y tiene mensajes de haber eliminado los datos.
2. Desde el texto de su pregunta, creo que entiendo cómo piensa que la estructura de su script debería estar haciendo lo que quiere, pero de hecho, solo generará una tabla de datos vacía ... como lo ha informado.
3. Esto es lo que creo que quieres como el inicio de tu guión.
Names Default To Here( 1 );
// Create a pointer variable to be able to reference
// the current active data table
dt = Current Data Table();
// Creat the split data table
dt2 = dt << Split(
Split By( :attribute ),
Split( :value ),
Output Table( "split table" ),
Sort by Column Property
);
// Add the new columns to the split data table
dt2 << New Column( "date", Character( 1 ), "Nominal", Set Values( {""} ) );
dt2 << New Column( "A", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "B", Numeric, "Continuous", Format( "Best", 12 ), Set Values( {""} ) );
dt2 << New Column( "C",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( :Name( "A" ) + :Name( "B" ) )
);
dt2 << New Column( "D",
Numeric,
"Continuous",
Format( "Percent", 12, 0 ),
Formula( :Name( "A" ) / :Name( "C" ) )
);