Si quelqu'un peut aider, j'apprécierais grandement!
J'essaie de créer une variable catégorielle qui reflétera les changements d'emploi en fonction de deux variables: JOBCODE TimePoint 2 et JOBCODE TimePoint 2.
Essentiellement, cette variable catégorielle me permettra de voir si un employé donné a l'un des événements suivants du point de temps 1 au point de temps 2: rejoint l'organisation (nouvel employé), changé de JOBCODE (transféré au sein de l'organisation) ou quitté l'organisation ( résiliation / séparation).
Le code ci-dessous représente ma structure de données car tous les nouveaux employés auront une valeur vide / nulle pour leur JOBCODE à Timepoint 1, tous les employés licenciés auront une valeur vide / nulle pour JOBCODE à Timepoint 2 et tous les employés qui ont changé de poste auront un JOBCODE ne correspond pas dans le champ de Timepoint 1 à Timepoint 2.
En ce qui concerne la commande vide / null, j'ai essayé un certain nombre de choses différentes. J'ai essayé d'utiliser isMissing ainsi que == “” et j'ai également essayé! Contains. Aucun d'entre eux ne fonctionne. Je n'ai pas de préférence sur lequel de ces styles est utilisé tant qu'il fonctionne.
Pour les employés qui transfèrent, je veux seulement savoir s'ils ont gardé un code de travail contenu dans mylist
J'ai créé un faux tableau de données. La colonne 1 contient des identifiants d'employés composés à titre d'exemple. Les colonnes 2 et 3 représentent les codes de travail au Timepoint 1 et au Timepoint 2. La colonne 4 est la sortie que j'attendrais en fonction des valeurs que j'ai entrées dans les colonnes 2 et 3. La colonne 5 contient quelques notes de clarification.
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"};Voici ma refonte de votre code qui semble fonctionner
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"
);
);