Wenn jemand dabei helfen kann, würde ich es sehr schätzen!
Ich versuche, eine kategoriale Variable zu erstellen, die Änderungen in der Beschäftigung basierend auf zwei Variablen widerspiegelt: JOBCODE TimePoint 2 und JOBCODE TimePoint 2.
Im Wesentlichen kann ich anhand dieser kategorialen Variablen feststellen, ob ein Mitarbeiter von Zeitpunkt 1 bis Zeitpunkt 2 eines der folgenden Ereignisse aufweist: Beitritt zur Organisation (neuer Mitarbeiter), Änderung von JOBCODE (innerhalb der Organisation übertragen) oder Verlassen der Organisation ( Beendigung / Trennung).
Der folgende Code stellt meine Datenstruktur dar, da neue Mitarbeiter zum Zeitpunkt 1 einen Leer- / Nullwert für ihren JOBCODE haben, gekündigte Mitarbeiter zum Zeitpunkt 2 einen Leer- / Nullwert für JOBCODE haben und alle Mitarbeiter, die ihre Position geändert haben, einen Nicht übereinstimmender JOBCODE im Feld von Zeitpunkt 1 bis Zeitpunkt 2.
Was den Befehl für blank / null betrifft, habe ich verschiedene Dinge ausprobiert. Ich habe versucht, isMissing sowie == "" zu verwenden, und ich habe auch versucht! Enthält. Keiner von ihnen funktioniert. Ich habe keine Präferenz dafür, welcher dieser Stile verwendet wird, solange er funktioniert.
Für diejenigen Mitarbeiter, die wechseln, interessiert mich nur, ob sie einen Jobcode in meiner Liste behalten haben oder nicht
Ich habe eine Scheindatentabelle erstellt. In Spalte 1 sind zum Beispiel einige zusammengesetzte Mitarbeiter-IDs aufgeführt. Die Spalten 2 und 3 stellen Jobcodes zu Zeitpunkt 1 und Zeitpunkt 2 dar. Spalte 4 ist die Ausgabe, die ich aufgrund der in Spalte 2 und 3 eingegebenen Werte erwarten würde. Spalte 5 enthält einige Hinweise zur Verdeutlichung.
new column ("JOBCODE Status", Character, Nominal) << Formula
(If (Contains (mylist, :"JOBCODE Timepoint1") & !Contains (mylist, :"JOBCODE Timepoint2"),"Change in JOBCODE",
(If (Contains (mylist, :"JOBCODE Timepoint1") & Contains (mylist, :"JOBCODE Timepoint2"),"No Change",
(If (Contains (mylist, :"JOBCODE Timepoint1") & isMissing (:"JOBCODE Timepoint2"),
"Termination/Separation",
(If (isMissing (mylist, :"JOBCODE Timepoint1") & Contains (:"JOBCODE Timepoint2"),
"New Employee",
))))))));
mylist= {"HH0029",
"HH0030",
"HH0241",
"HH0242",
"HH0317",
"HH0635",
"HH0635",
"HH0636",
"HH0636",
"HH0639",
"HH0742",
"HH0750",
"HX0002",
"HX0003",
"HX0008",
"HX0010",
"HX0022",
"HX0106",
"HX0106",
"HX0107",
"HX0114",
"HX0115",
"SH0049",
"SH0504",
"SH0678",
"HH0113",
"HH0708",
"HH0746",
"HX0111",
"NU0017",
"NU0100",
"NU0200",
"NU0203",
"NU0206",
"NU0207",
"NU0213",
"NU0243",
"NU0244",
"NU0300",
"NU0301",
"NU0305",
"NU0327",
"NU0328",
"NU0362",
"NU0364",
"NU0400",
"NU0422",
"NU0423",
"NU0424",
"NU0425",
"NU0440",
"NU0461",
"NU0615",
"NU0618",
"NU0619",
"NU0620",
"NU0621",
"NU0622",
"NU0625",
"NU0800",
"NU0801",
"NU0923",
"NX0002",
"NX0006",
"NX0017",
"NX0018",
"NX0019",
"NX0023",
"NX0125",
"NX0465",
"NX0466",
"NX0609",
"NX0610",
"NU0610",
"NU0700",
"NU0710",
"NU0713",
"NU0922",
"NU0364",
"NX0609",
"NX0610"};Hier ist meine Überarbeitung Ihres Codes, die zu funktionieren scheint
New Column( "myJOBCODE Status", Character, Nominal ) << Formula(
If( Row() == 1,
mylist = {"HH0029", "HH0030", "HH0241", "HH0242", "HH0317", "HH0635", "HH0635", "HH0636", "HH0636", "HH0639", "HH0742",
"HH0750", "HX0002", "HX0003", "HX0008", "HX0010", "HX0022", "HX0106", "HX0106", "HX0107", "HX0114", "HX0115", "SH0049",
"SH0504", "SH0678", "HH0113", "HH0708", "HH0746", "HX0111", "NU0017", "NU0100", "NU0200", "NU0203", "NU0206", "NU0207",
"NU0213", "NU0243", "NU0244", "NU0300", "NU0301", "NU0305", "NU0327", "NU0328", "NU0362", "NU0364", "NU0400", "NU0422",
"NU0423", "NU0424", "NU0425", "NU0440", "NU0461", "NU0615", "NU0618", "NU0619", "NU0620", "NU0621", "NU0622", "NU0625",
"NU0800", "NU0801", "NU0923", "NX0002", "NX0006", "NX0017", "NX0018", "NX0019", "NX0023", "NX0125", "NX0465", "NX0466",
"NX0609", "NX0610", "NU0610", "NU0700", "NU0710", "NU0713", "NU0922", "NU0364", "NX0609", "NX0610"}
);
isThere = Function( {value},
{},
If( Contains( mylist, value ),
1,
0
)
);
a = :JOBCODE Timepoint1;
b = :JOBCODE Timepoint2;
If(
isThere( a ) & b == "", "Termination/Separation",
a == "" & isThere( b ), "New Employee",
isThere( a ) & isThere( b ), "No Change"
);
);