Error con declaración IF
Estoy usando una instrucción IF como se muestra a continuación. Cuando ejecuto el script, solo implementa el comando "Abrir"> el script ni siquiera ingresa al bucle IF.
Intenté usar "PARA CADA FILA" junto con la declaración IF como se muestra en el script 2 pero arroja el siguiente error
¿¿Alguna sugerencia??
dt = Open ("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means.jmp");
IF( :"Ppk"n <= 2 ,
(
dt << Select where( :"Ppk"n <=2 );
dt_ppk = dt << subset (Output table("fc_mcs11_evm_cluster_means_low_ppk.jmp"), Selected Rows( 1 ), selected columns( 0 ));
dt_ppk << Save As("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means_low_ppk.jmp");
),
"PPk Good"
);dt = Open ("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means.jmp");
For each row(dt,
IF( :"Ppk"n <= 2 ,
(
dt << Select where( :"Ppk"n <=2 );
dt_ppk = dt << subset (Output table("fc_mcs11_evm_cluster_means_low_ppk.jmp"), Selected Rows( 1 ), selected columns( 0 ));
dt_ppk << Save As("C:\Users\NXF90574\Documents\NXP\Machine Learning\Script trial\fc data\fc_mcs11_evm_cluster_means_low_ppk.jmp");
),
"PPk Good"
)
); Automatización y secuencias de comandosAnálisis y modelado de datos básicosRe: Error con sentencia IF¿Que estás tratando de hacer?
Re: Error con sentencia IF1] Abrir un archivo
2 ] Comprobando si el nombre de la columna Ppk <=2
a] en caso afirmativo, seleccione filas con Ppk <= 2 - subdividalas y guárdelas como otra tabla de datos
b] si no, muestra "PPk bueno"
Re: Error con sentencia IFUse << Get Rows Where para obtener las filas con Ppk <= 2 y luego use declaraciones if para verificar si los elementos en esa lista son mayores que 0
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
Show(Row()); // Row() is inmitialize as 0 which isn't valid row number in JMP
// -> :name; // won't return anything useful
rows_of_interest = dt << Get Rows Where(:height <= 60);
If(N Items(rows_of_interest) > 0,
// perform actions
Show("PPK NOK")
,
Print("PPK OK");
);Re: Error con sentencia IFUsar @jthi respuesta. Pero para explicar lo que pasó...
En sus dos fragmentos originales, el primero falla porque no hay una fila actual en la tabla, por lo que
:"Ppk"n <= 2
está comparando con un valor faltante; las comparaciones con las que faltan no son ni verdaderas ni falsas y la cláusula verdadera y falsa de if no se ejecutan (un resultado sorprendente si no conoce los valores faltantes en JMP).
dt=open("$sample_data/big class.jmp");
dt:age==14
. <<< no row selected, result is missing
row()=5; dt:age==13
0 <<< LILLIE is 12
En el segundo ejemplo, ForEachRow convierte cada fila en la fila actual, una a la vez, por lo que se evita el primer problema. Basado en el no se puede guardar en la fila 2 mensaje, estoy bastante seguro de que la primera tabla de subconjuntos se aferra al nombre del archivo y el segundo subconjunto creado a partir de la fila 2 quiere guardarse en el mismo archivo, que ya está en uso. (editar:) cerrar (dt_ppk) podría resolver eso, pero aún estaría recreando el mismo archivo, una y otra vez.
Re: Error con sentencia IFEl primer argumento de la función If(),
:"Ppk"n <= 2
se evalúa y compara una referencia de columna o una variable de tabla con un valor numérico. ¿Es eso lo que quieres hacer?
¿Tiene una columna y una variable de tabla que son ambos nombres Ppk?
Re: Error con sentencia IFMuchas gracias. Esto funcionó bien.
Re: Error con sentencia IFHola Craige,
Gracias por la explicación. Está claro ahora.