Obtener filas donde el comando solo funciona en una columna específicaHola,
Estoy usando el comando "obtener filas donde" para reemplazar los valores numéricos con una "P" o "N" dependiendo de si alcanzaron un valor de umbral.
Aquí está el código:
dt = Abrir ("C: \ test_data.jmp");
trilla = 12; // El usuario establece este valor de umbral
Probar (dt: HOOK [dt << obtener filas donde (: Hook> = thresh)] = "P");
Probar (dt: HOOK [dt << obtener filas donde (: Hook == "")] = "N");
Así que esto funciona bien y llena la columna con N's y P's. Si copio y pego esas dos líneas de prueba y cambio la designación de columna, no funcionará en las otras columnas. Si cambio el orden de los comandos o cambio el orden de las columnas, aún así solo se hace la columna Enganchar.
¿Qué me estoy perdiendo?
¡Gracias!
K
Re: Obtener filas donde el comando solo funciona en una columna específicaDado que las columnas son numéricas, la comparación
Try( dt:HOOK[dt << get rows where( :Hook == "" )] = "N" );
no trabajará. Debes usar que falta en su lugar:
Try( dt:HOOK[dt << get rows where( is missing(:Hook))] = "N" );
Pero como otros han dicho, la asignación a "N" no funcionará porque la columna es numérica.
Re: Obtener filas donde el comando solo funciona en una columna específicaSí ... lo hará, sin embargo, no es una buena práctica de software hacer esto. Yo sugeriría que en lugar de establecer los valores en "P" o "N", cambie los valores a otros valores numéricos y use la propiedad de columna, Etiquetas de valor para cambiar los valores numéricos que especificó, para que se muestren como " P "o" N ". De esa manera, puede continuar comparando adecuadamente los valores numéricos como lo hace con el valor "Trillar", pero la pantalla le ofrece lo que desea.
Re: Obtener filas donde el comando solo funciona en una columna específicapienso que @txnelson es correcto.
Elimine el intento () de sus intentos para que pueda ver los errores en el registro.
Este es un ejemplo del error que recibirá cuando intente asignar un valor de carácter a una columna numérica.
//:*/
dt=open("$SAMPLE_DATA\Big Class.jmp");
thresh=65;
dt:height[dt << get rows where( :height >= thresh )] = "P";
/*:
Column "height" requires numeric values in access or evaluation of 'Bad Argument'
Re: Obtener filas donde el comando solo funciona en una columna específicaNo intenta ser contrario, pero cuando funciona para esa columna, convierte la columna automáticamente en carácter al insertar las P y las N.
Re: Obtener filas donde el comando solo funciona en una columna específicaSi sus columnas son numéricas y continuas, entonces la configuración de los valores a "P" o "N" no funcionará. Puede establecer las celdas iguales a un valor numérico, pero no a un valor de carácter.
Re: Obtener filas donde el comando solo funciona en una columna específicaDe hecho, también lo consideré (mi resolución de problemas no está tan mal para un novato), pero cuando miré la información de la columna, las tres columnas se configuran como "Numérica" y "Continua".
Re: Obtener filas donde el comando solo funciona en una columna específicaHay un problema con las columnas que son numéricas o de caracteres. Todas las celdas de una columna deben ser de caracteres o numéricas. En su código, está solicitando que la columna Hook se compare con un valor numérico de "Trillar". "Trilla" tiene un valor numérico de 12. A continuación, desea establecer el valor de Hook en un carácter "P" o "N".
¿Las columnas Hook, Rounds y Whip son numéricas o de carácter?
Re: Obtener filas donde el comando solo funciona en una columna específicaOjalá fuera * así * simple. El código adicional está abajo. ¿Hay algún tipo de operador de archivos que me esté perdiendo, como que necesita cerrar o guardar después de cada sustitución de columna?
Nombres predeterminados aquí ( 1 );
dt = Abierto ( "C: \ test_data.jmp" );
trilla = 12 ; // El usuario establece este valor de umbral (define filas en la salida)
Tratar (dt: GANCHO [dt << obtener filas donde (: Gancho> = trillar)] = "PAG" );
Tratar (dt: GANCHO [dt << obtener filas donde (: Gancho == "" )] = "NORTE" );
Tratar (dt: ROUNDS [dt << obtener filas donde (: Rondas> = trillar)] = "PAG" );
Tratar (dt: ROUNDS [dt << obtener filas donde (: Rondas == "" )] = "NORTE" );
Tratar (dt: WHIP [dt << obtener filas donde (: Látigo> = trillar)] = "PAG" );
Tratar (dt: WHIP [dt << obtener filas donde (: Whip == "" )] = "NORTE" );
Re: Obtener filas donde el comando solo funciona en una columna específica¿Puede mostrarnos las líneas después de cortar, pegar y cambiar el valor de Hook?
Supongo que no está cambiando uno de los 2 lugares en ambas columnas donde aparece Hook.