¿Cómo uso JSL para cambiar el valor en celdas con valores faltantes a cero?Al dividir una tabla, termino con celdas en varias columnas con valores faltantes.Quiero cambiar estos valores a 0.El número de filas y columnas divididas variará, según los datos que se obtengan a través de una consulta SQL.¿Cómo itero a través de estas columnas seleccionadas y hago este cambio de valor faltante a 0?
Gracias
Re: ¿Cómo uso JSL para cambiar el valor de las celdas con valores faltantes a cero?De acuerdo en que en este caso no es necesario pero es un patrón tremendamente útil.Tome una pieza arbitrariamente compleja de JSL.Particularmente uno donde es difícil parametrizar los componentes constituyentes.Ponga entre paréntesis sus variables con signos de intercalación (^var^) y pegue todo el lote dentro de un " patrón Eval-Parse-Eval Insert".Problema resuelto.
Re: ¿Cómo uso JSL para cambiar el valor de las celdas con valores faltantes a cero?Gracias, thomasz.¡¡Funciona genial!!
Re: ¿Cómo uso JSL para cambiar el valor de las celdas con valores faltantes a cero?Puedes hacerlo en tres pasos a mano:
Seleccione las columnas
Elija estandarizar atributos y luego recodificar.
Recodificar todos los .'s a 0.
Si quieres hacerlo por jsl, puedes hacerlo así:
dt=current data table();
colnames = dt << get column names( numeric,string );
For( i = 1, i <= N Items( colnames ), i++,
column(dt,colnames[i])[dt<<GET rows="" where=""></GET>
Saludos cordiales, Tomás
Re: ¿Cómo uso JSL para cambiar el valor de las celdas con valores faltantes a cero?Aquí está la misma idea que @cwillden pero sin tener que usar Eval(Parse())
Names Default To Here( 1 );
dt = Current Data Table();
numericColumnNames = dt << get column names( numeric, string );
For( i = 1, i <= N Items( numericColumnNames ), i++,
Try(
Column( dt, numericColumnNames[i] )[dt << get rows where(
Is Missing( (As Column( dt, numericColumnNames[i] )) )
)] = 0
)
);
Re: ¿Cómo uso JSL para cambiar el valor de las celdas con valores faltantes a cero?Prueba algo como esto:
dt = Current Data Table();
cols = dt << Get Selected Columns();
For( i = 1, i <= N Items( cols ), i++,
Eval( Parse( Eval Insert( "^cols[i]^[dt << Get Rows Where(Is Missing(^cols[i]^))] = 0" ) ) )
);
Terminé usando Eval-Parse-Eval Insert porque a la función Is Missing no le gustaba algo como Is Missing(cols[i]) o Is Missing(Column(cols[i])).Usar Eval-Parse-Eval Insert siempre se siente un poco como un truco, pero le dará lo que necesita.