Hilfe bei einer if-AnweisungHallo,
Mir fehlt hier wahrscheinlich etwas Grundlegendes. Ich versuche, die Werte einer Spalte zu ändern, indem ich eine Kombination aus zwei anderen Spaltenwerten verwende. Ich gebe die folgende if-Anweisung ein und die Spaltenwerte ändern sich nicht. Was fehlt mir hier? Vielen Dank für alle Tipps und Ratschläge.
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;
Verbraucher- und MarktforschungDatenmischung und -bereinigungBetreff: Hilfe bei einer if-AnweisungDas hat tatsächlich funktioniert. Ich habe eine kleine Änderung vorgenommen @jthi 's Beitrag und habe kleine Änderungen vorgenommen @Craige_Hales 's Code. Das endgültige Format, das für mich funktionierte, war folgendes:
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"
));
Betreff: Hilfe bei einer if-AnweisungIn Ihrer ursprünglichen JSL möchten Sie wahrscheinlich (bearbeiten: auch) etwas ändern
Rile_Calc3 == "center" // compare. the result of the compare (0 or 1) will be the result of the if(), see below
Zu
Rile_Calc3 = "center" // assign value
JSL if-Anweisungen geben einen Wert zurück; man könnte es so schreiben
: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.
);
Wenn Sie wissen, dass es keine unerwarteten Fälle gibt, können Sie die letzte Klausel „sonst“ weglassen. Aber es liegt in der Natur unerwarteter Fälle, dass sie dann auftauchen, wenn man es am wenigsten erwartet.
Wenn Geheimnisse
Betreff: Hilfe bei einer if-AnweisungDanke für die Antwort! Wie die verschiedenen Scripting-Anleitungen zeigen, sollte es das Richtige sein, doch hier hat es nicht funktioniert. Ich gehe davon aus, dass etwas mit der Datentabelle und der gesamten Verarbeitung, die ich bereits an diesen Variablen durchgeführt habe, nicht stimmte. Letztendlich bestand die Problemumgehung darin, die beiden nominalen Spalten zu einer zu verketten und dann die dort erhaltenen Ausdrücke neu zu kodieren, um die gewünschten Ergebnisse zu erzielen. Danke noch einmal.
Betreff: Hilfe bei einer if-AnweisungSie können entweder „Für jede Zeile“ oder „Jeden Wert festlegen“ verwenden. Nachfolgend finden Sie ein Beispiel:
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
);
);