Ayuda con una declaración ifHola,
Probablemente me falta algo básico aquí. Estoy intentando cambiar los valores de una columna utilizando una combinación de otros dos valores de columna. Escribo la siguiente declaración if y los valores de las columnas no cambian. ¿Que me estoy perdiendo aqui? Gracias por cualquier sugerencia y consejo.
Names Default To Here( 1 );
dt = Data Table( "20210811Miflezet_CAPCMP.jmp" );
dt << Begin Data Update;
If( :justice_decision_REC_RILE2 == "reject" & :RILE_Calc2a == "center"
,
:Rile_Calc3 == "center"
,
:justice_decision_REC_RILE2 == "accept" & :RILE_Calc2a == "center"
,
:Rile_Calc3 == "center"
,
:justice_decision_REC_RILE2 == "reject" & :RILE_Calc2a == "left"
,
:Rile_Calc3 == "right"
,
:justice_decision_REC_RILE2 == "accept" & :RILE_Calc2a == "left"
,
:Rile_Calc3 == "left"
,
:justice_decision_REC_RILE2 == "reject" & :RILE_Calc2a == "right"
,
:Rile_Calc3 == "left"
,
:justice_decision_REC_RILE2 == "accept" & :RILE_Calc2a == "right"
,
:Rile_Calc3 == "right"
);
dt << End Data Update;
Investigación de Consumidores y MercadosCombinación y limpieza de datosRe: Ayuda con una sentencia ifEso realmente funcionó. Hice un pequeño ajuste usando @jthi 's post e hice pequeños cambios en @Craige_Hales El código de. El formato final que funcionó para mí fue este:
dt = Data Table( "20210812Miflezet_CAPCMP.jmp" );
For Each Row(
If(
:just_dec_rec == "reject" & :RILE_Rec == "center", :RILE4="center",
:just_dec_rec == "accept" & :RILE_Rec == "center", :RILE4= "center",
:just_dec_rec == "reject" & :RILE_Rec == "left", :RILE4= "right",
:just_dec_rec == "accept" & :RILE_Rec == "left", :RILE4="left",
:just_dec_rec == "reject" & :RILE_Rec == "right", :RILE4="left",
:just_dec_rec == "accept" & :RILE_Rec == "right", :RILE4="right"
));
Re: Ayuda con una sentencia ifEn su JSL original probablemente (editar: también) desee cambiar
Rile_Calc3 == "center" // compare. the result of the compare (0 or 1) will be the result of the if(), see below
a
Rile_Calc3 = "center" // assign value
JSL si las declaraciones devuelven un valor; podrías escribirlo como
:Rile_Calc3 = If(
:justice_decision_REC_RILE2 == "reject" & :RILE_Calc2a == "center", "center",
:justice_decision_REC_RILE2 == "accept" & :RILE_Calc2a == "center", "center",
:justice_decision_REC_RILE2 == "reject" & :RILE_Calc2a == "left", "right",
:justice_decision_REC_RILE2 == "accept" & :RILE_Calc2a == "left", "left",
:justice_decision_REC_RILE2 == "reject" & :RILE_Calc2a == "right", "left",
:justice_decision_REC_RILE2 == "accept" & :RILE_Calc2a == "right", "right",
:Rile_Calc3 // or "Unknown" ? depends how you want to handle the unexpected case.
);
Si sabe que no hay casos inesperados, puede omitir la cláusula final de lo contrario. Pero la naturaleza de los casos inesperados es aparecer cuando menos se espera.
Si secretos
Re: Ayuda con una sentencia if¡Gracias por la respuesta! Como muestran las distintas guías de secuencias de comandos, debería ser lo correcto, pero no funcionó aquí. Supongo que algo andaba mal con la tabla de datos y todo el procesamiento que ya hice con estas variables. Finalmente, la solución fue concatenar las dos columnas nominales en una y luego recodificar las expresiones que obtuve hasta los resultados deseados. Gracias de nuevo.
Re: Ayuda con una sentencia ifPuede utilizar Para cada fila o Establecer cada valor. A continuación se muestra un ejemplo:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
For Each Row(
If(:sex == "F",
:age = .
);
);
dt:weight << Set Each Value(
If(:sex == "M",
.,
:height
);
);