Secuencias de comandos para omitir el cambio de una columna si la columna no está presenteHola a todos,
¿Hay alguna forma en que una parte del script pueda ignorarse automáticamente si la columna de destino no está presente? Por ejemplo, tengo la secuencia de comandos que se muestra a continuación y, a veces, no hay una "C numérica" disponible (es una pieza de automatización que puede tener o no 3 variables). La secuencia de comandos se detiene actualmente en esta pieza cuando no se puede encontrar una "C numérica"; lo ideal sería querer hacer un script con múltiples "Numerical #" que ignorará automáticamente esa parte del script si no está presente:
Tabla de datos ( "5 de enero de subconjunto" ) ;
Columna ( "Columna" ) << Tipo de datos ( Numérico ) ;
Columna ( "Columna" ) << Tipo de modelado ( Continuo ) ;
Columna ( "Datos" ) << Tipo de datos ( Numérico ) ;
Columna ( "Datos" ) << Tipo de modelado ( Continuo ) ;
Columna ( "Numérico A" ) << Tipo de datos ( Numérico ) ;
Columna ( "Numérico A" ) << Tipo de modelado ( Continuo ) ;
Columna ( "Numérico b" ) << Tipo de datos ( Numérico ) ;
Columna ( "Numérico b" ) << Tipo de modelado ( Continuo ) ;
Columna ( "Numérica c" ) << Tipo de datos ( Numérico ) ;
Columna ( "Numérica c" ) << Tipo de modelado ( Continuo ) ;
Gracias,
Joe
Re: secuencias de comandos para omitir el cambio de una columna si la columna no está presenteAquí hay un script que toma lo que usted dijo que había intentado y lo corrige para que funcione. También he anotado la secuencia de comandos para ayudar a entender lo que está haciendo cada declaración
// Set a variable "dt" to point to the data table you want to work on
// In the example you showed, it was a table called "Jan 5 Subset"
dt = Data Table("Jan 5 Subset");
// Now request to get from the data table, now referenced by the
// variable "dt" and return the list as strings
// Using the Contains function, we will check to see if a column
// named "Numerical A" is found in the returned list of column
// names. If it is, the comparison will be true and the statements
// following the "," will be executed
IF( Contains(dt << Get column names(string), "Numerical A"),
// Set the Data Type and Modeling Type for the column "Numerical A"
Column("Numerical A") <<DATA type=""></DATA>Re: secuencias de comandos para omitir el cambio de una columna si la columna no está presenteEsa segunda pieza de scripting funciona perfectamente, muchas gracias!Re: secuencias de comandos para omitir el cambio de una columna si la columna no está presenteHola Jim,
Gracias por su rápida respuesta. He probado la función superior:
dt = Tabla de datos ( "5 de enero de subconjunto" );
Si ( Contiene (dt < < obtener columna nombres (cadena), "Columna" )
Columna ( "Columna" ) < < Datos Tipo (Numérico) < < Modelado Tipo (Continuo)
);
Sin embargo, no estoy seguro de qué poner donde "(cadena)" está en el script?
En el momento la secuencia de comandos parece estar fallando en esta línea con "Enviar Espera Objeto de secuencias de comandos". Mi script actual para esto sería:
SI ( Contiene ( dt << Obtener nombres de columna ( cuerda ) , "Numérico A" ) ,
"Numérico A" ) << Tipo de datos ( Numérico ) << Tipo de modelado ( Continuo ) ;
Disculpas si hay algo realmente obvio que me estoy perdiendo aquí, gracias de antemano.
Re: secuencias de comandos para omitir el cambio de una columna si la columna no está presenteHay un par de maneras en que hago esto ......
El primero es colocar las declaraciones que deben ser calificadas, en una función IF. Lo más formal de esto sería obtener los nombres de las columnas de la tabla de datos y luego basar la condición de SI en caso de que se haya encontrado la columna.
dt = Data Table( "Jan 5 Subset" );
If( Contains( dt << get column names( string ), "Column" ),
Column( "Column" ) << Data Type( Numeric ) << Modeling Type( Continuous )
);
El segundo método consiste en dejar que JMP, por ejemplo, omita cualquier error que encuentre utilizando una función Try
Try( Column( "Column" ) << Data Type( Numeric ) << Modeling Type( Continuous ) );
La declaración puede fallar, pero JMP continuará la ejecución