Cómo reemplazar valores perdidos con '0' usando JSL<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />¿Cómo reemplazo los valores perdidos con '0' usando JSL?
Puedo hacer esto manualmente usando 'Buscar y reemplazar todo', pero necesito incorporarlo en un código que se ejecute automáticamente todos los días.
Re: Cómo reemplazar valores perdidos con '0' usando JSLEsto funciona cuando lo ejecuto desde una ventana de secuencias de comandos con el botón de reproducción, pero no dentro de un depurador o cuando lo ejecuto mediante la ejecución automática de .jsl.
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
ragincajún
JMP13.2.1
Re: Cómo reemplazar valores perdidos con '0' usando JSLAbsolutamente, agradezco la palabra de precaución.Seguro que no lo pensé.
También es importante recordar que los datos que faltan pueden ser datos valiosos y, a veces, es mejor dejarlos como están.
Re: Cómo reemplazar valores perdidos con '0' usando JSLEso es todo cierto.Sentí que era hora de poner una bandera de precaución.Solo porque nosotros poder hacer algo en JMP no siempre significa que debería .
Re: Cómo reemplazar valores perdidos con '0' usando JSLSi bien lo que dice es cierto, hace suposiciones sobre los datos.Por ejemplo, ¿tal vez sus datos no son continuos?A veces, 0 no se registra y, en cambio, se deja como faltante.Si alguien intentara hacer un análisis Oneway usando 0 como falso y 1 como verdadero tendrían un problema si sus ceros terminaran apareciendo como faltantes , ya que el análisis Oneway ignora las filas que faltan en JMP.¡Terminarían con SOLO UNA categoría!
Hay otras razones por las que 0 podría aparecer como faltante.Por lo general, almacenar 0 en una base de datos grande es una pérdida de espacio.Como Pokemon Go es grande en este momento, lo usaré como ejemplo.Podría querer registrar todos los Pokémon que atrapé en un día, 12 ratattas y 6 pidgeys.Sin embargo, no querría almacenar 0 para los otros 148 Pokémon que no atrapé ese día.Si lo hiciera, llenaría rápidamente mi base de datos con información inútil.Por lo tanto, si consultara mis datos, me faltarían la mayoría de mis Pokémon en un momento dado, pero la falta es = a 0.
En situaciones similares, podría obtener datos faltantes equivalentes a 0 b/c de problemas de conversión de datos, consultas mal diseñadas, etc.
Re: Cómo reemplazar valores perdidos con '0' usando JSLLamento llegar tarde a esta fiesta, pero me siento obligado a intervenir: establecer los valores perdidos en cero (o la media o cualquier otro método de imputación simple) tiene serios inconvenientes.La mayoría de estos enfoques producen estimaciones de parámetros sesgadas, incluso en condiciones ideales donde los datos faltan completamente al azar.Hay formas mucho mejores de lidiar con los datos faltantes.
Re: Cómo reemplazar valores perdidos con '0' usando JSLDado que nadie más respondió, la solución es la misma, simplemente tome las columnas de caracteres en su lugar y establezca las filas iguales al carácter que encuentre adecuado: "N/A" en el caso a continuación.
Solo tenga cuidado, configurarlo = 0 cambiará la columna a numérica y eliminará todos los datos de caracteres, sin embargo, = "0" debería estar bien.
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
Re: Cómo reemplazar valores perdidos con '0' usando JSL¡Frío! ... en las últimas 2 líneas, clsRej debe reemplazarse por clsMat, ¿verdad?
mientras tanto, ¿tenemos alguna solución similar para la columna de caracteres?
Re: Cómo reemplazar valores perdidos con '0' usando JSLDe otra manera...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
etc.
la indexación lógica suele ser más rápida que los bucles
Re: Cómo reemplazar valores perdidos con '0' usando JSLgracias a todos!
¡salud!
Re: Cómo reemplazar valores perdidos con '0' usando JSLOtra forma más de hacerlo pero con un solo bucle (solo columnas numéricas).
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
Re: Cómo reemplazar valores perdidos con '0' usando JSLEsto es esencialmente lo mismo que la respuesta de exj pero un poco más limpia.Lo hace; sin embargo, solo faltan cambios en las columnas numéricas.
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
Re: Cómo reemplazar valores perdidos con '0' usando JSLEvitaría usar j como una variable de bucle porque también es una función JSL.
J(nfilas, , )
Función: Crea una matriz de valores idénticos.
Devoluciones: La matriz.
Argumentos:
filas: Número de filas en la matriz. Si ncoles no se especifica, filas también se usa como ncoles .
ncoles: Número de columnas en la matriz.
valor: El valor utilizado para rellenar la matriz. Si valor no se especifica, se utiliza 1.
Re: Cómo reemplazar valores perdidos con '0' usando JSLHola,
Esto se basa en el libro 'Jump into scripting'. Reemplazo todos los valores que faltan con z.
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
Espero que esto ayude.