Eliminar columnas con referencia de fórmula en JSLHola,
Tengo una secuencia de comandos en la que me gustaría eliminar columnas que contienen una referencia de fórmula.Esto es fácil de hacer en JMP: cuando elimino las columnas innecesarias, aparece una "Alerta JMP" y selecciono "Eliminar fórmula".Luego puedo eliminar mis columnas de metadatos, pero la tabla mantiene el resultado calculado en la columna de fórmula.
Mi problema es: ¿cómo puedo escribir esto?¿Existe una opción para eliminar una columna de metadatos que contiene una referencia de fórmula?Estoy usando JMP10. Consulte el ejemplo a continuación.
/*
bigClass = Open( "$SAMPLE_DATA/Big Class.jmp" );
bigClass << New Column( "height / weigh", Numeric, Continuous, Format( "Best", 12 ), Formula( :height / :weight ) );
bigClass << Delete Column( "height" );
bigClass << Delete Column( "weight" );
*/
¡Gracias!
Re: Eliminar columnas con referencia de fórmula en JSLResulta que ya envié algo de esta naturaleza a la lista de deseos de JMP y estuve en contacto con el soporte de JMP (aún no hay una solución clara, pero sí una solución alternativa que aún no he tenido tiempo de integrar).
Elemento de la lista de deseos: Eliminación de fórmula dinámica
Un par de opciones alternativas de mis chats con el soporte de JMP.
Names Default to here(1);
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "Test 1", Numeric, Formula( :height + :weight ) );
dt << New Column( "Test 2", Numeric, Formula( :height + :age ) );
keepCols = AssociativeArray({"name","Test 1","sex"});
formList = {};
formCols = {};
for(i=1,i<=ncol(dt),i++,
if(IsEmpty(Column(dt,i) << get formula),
Empty()
,
insertInto(formList,Column(dt,i) << get formula);
insertinto(formCols,i);
);
show(formList,formCols)
);
existingCols = dt << get column names(string);
For(i=1,i<=nitems(existingCols), i++,
there = keepCols[existingCols[i]];
If(there == 0,
for(j=1,j<=nitems(formList),j++,
nowCol = existingCols[i];
If(Contains(char(formList[j]),nowCol) > 0,
Print(nowCol);
//show(formCols[j]);
Try(Column(dt,formCols[j]) << delete formula);
,
Empty()
)
);
//dt << delete columns(eval(existingCols[i]))
)
);
For(i=1,i<=nitems(existingCols), i++,
there = keepCols[existingCols[i]];
If(there == 0,
dt << delete columns(eval(existingCols[i]))
)
);
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dt << New Column( "Test 1", Numeric, Formula( :height + :weight ) );
colList = {:age, :height, :name};
colListStr = {"age", "height", "name"};
failed = {};
//dt << Delete Columns( :age ); //works
//dt << Delete Columns( colList[1] ); //fails
//dt << Delete Columns( Column( colListStr[1] ) ); //works
For( i = 1, i <= N Items( colList ), i++,
//dt << Clear Column Selection;
//colList[i] << Set Selected;
str = "";
//str = Log Capture( dt << Delete Columns( colList[i] ) ); //fails
//str = Log Capture( dt << Delete Columns() ); //works for selected columns
str = Log Capture( dt << Delete Columns( Column( colListStr[i] ) ) ); //works
Show( str );
If( str != "",
Insert Into( failed, colList[i] )
);
);
Show( failed );
Re: Eliminar columnas con referencia de fórmula en JSLTodavía no he encontrado una solución. Lo más complicado de codificar que se me ocurrió sería esencialmente tomar todas las fórmulas y crear un mapa de la columna de fórmula para las variables locales necesarias para esa fórmula. Luego, eso podría usarse dinámicamente cuando sea necesario eliminar columnas.
Supongo que algo así es la base de cómo JMP sabe activar la advertencia en primer lugar. Me llevaría algo de tiempo encontrar algo claro para lo anterior, por lo que idealmente JMP podría crear una función JSL para darnos una capacidad booleana o algo así
Probablemente terminaré charlando con el soporte de JMP para encontrar una solución más oficial (o pedir una en la lista de deseos).
Re: Eliminar columnas con referencia de fórmula en JSLHola Natán,
¿Encontró una solución a su pregunta/problema publicado?
Estoy intentando hacer lo mismo... Me gustaría eliminar una columna que se utiliza en una fórmula en una o más columnas.
Quiero hacerlo dinámico en lugar de especificar un " col << eliminar fórmula" declaración para una columna en particular.
Re: Eliminar columnas con referencia de fórmula en JSLEsto es un poco antiguo, pero tengo una adición y creo que lo intentaré aquí primero 
¿Qué pasa si no conozco las columnas con la fórmula que harán referencia a la columna que quiero eliminar? Estoy tratando de hacer algo dinámico y me gustaría precodificarlo para que elimine automáticamente la fórmula si hay un conflicto (como si lo hiciera manualmente), pero no puedo encontrar ninguna sintaxis que lo permita.
El método "más fácil" es simplemente eliminar todas las fórmulas para que nunca sea un problema, pero parece un poco más extremo de lo necesario.
Re: Eliminar columnas con referencia de fórmula en JSL@DonHil Columna("nombre de columna") << eliminar fórmula;
Re: Eliminar columnas con referencia de fórmula en JSL¿Puedes decirme cómo resolviste este problema?Intenté eliminar la fórmula, pero esto eliminó los valores de la columna original.Necesito eliminar una columna que contiene una referencia de columna.Gracias.
Re: Eliminar columnas con referencia de fórmula en JSLNo importa.Encontré la respuesta:
https://community.jmp.com/message/48129#48129