¿Qué inspiró esta solicitud de lista de deseos?
Siempre escribiendo scripts más o menos complicados para "limpiar" mis tablas de datos (eliminar scripts de tablas, variables de tablas, propiedades de columnas, ...)
¿Cuál es la mejora que le gustaría ver?
Proporcionar una plataforma sencilla para limpiar la tabla de datos. Esto debería dar la opción de eliminar scripts de tabla, variables de tabla, propiedades de columna, estados de fila y todas las modificaciones diferentes. En el mejor de los casos, el usuario podría decidir qué eliminar. Algunas de estas opciones se podrían implementar en Subset, pero creo que también debería ser una plataforma independiente.
¿Por qué es importante esta idea?
Facilita la creación de nuevas tablas de datos a partir de las existentes sin que transfieran información no relevante.
Interesante idea, @jthi . ¿Cómo lo haces hoy?
Dependiendo del caso, yo:
- Haz esto manualmente
- Guiónelos (si se trata de automatización)
- A veces me salto la limpieza y puedo terminar con una tabla de datos un poco desordenada, pero no es un problema hasta que comparto la tabla.
Lo más probable es que escriba un complemento (ya comencé, pero me encontré con una "pequeña" ampliación de funciones con todo tipo de características innecesarias) para realizar estas tareas específicas de limpieza de "metadatos", ya que las hago con bastante regularidad.
Hasta que el deseo reciba suficientes elogios, este script podría ayudar.
Crea un script para la tabla de datos actual y, dependiendo de la configuración, elimina scripts, propiedades de columna y la expresión agregar filas().
Names Default To Here( 1 );
removeScripts = 1;
removeColumnProperties = 1;
remove rows = 1;
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << copy table script( "no data" );
tableScript = Eval( Eval Expr( Parse( Expr( Get Clipboard() ) ) ) );
tableScriptList = Substitute( Name Expr( tableScript ), Expr( New Table() ), Expr( List() ) );
If( removeScripts,
tableScriptList = Filter Each( {part}, tableScriptList, Not( Head( Part ) == Expr( New Script() ) ) )
);
tableScriptList = Transform Each( {part}, tableScriptList,
If(
Head( part ) == Expr( New Column() ) & removeColumnProperties,
Substitute( Name Expr( part ), Extract Expr( part, Set Property( Wild List() ) ), . ),
Head( part ) == Expr( Add Rows() ) & remove rows, .,
Name Expr( part )
)
);
newtableScript = Substitute( Name Expr( tableScriptList ), Expr( List() ), Expr( New Table() ) );
newtableScript;
Está lejos de ser ideal.
El sustituto es bastante peligroso: no solo reemplaza la expresión que el usuario quería reemplazar, sino que reemplaza todas las expresiones coincidentes.
por ejemplo cualquier lista que quede al final del script será reemplazada por New Table() !!!
Cualquier nueva tabla() que esté en un script de tabla será reemplazada por Lista() [y luego por Nueva tabla() al final :]
¿Conoce alguna solución para evitar que JMP haga esto?
¿Cabeza sustituta ?
Con este tema en mente, escribí este deseo:
:folded_hands: Indexación de expresiones: acceso de lectura y escritura
Una vez que esté disponible, actualizaré el script y lo haré más robusto.