누군가 이것으로 도울 수 있다면 크게 감사하겠습니다!
JOBCODE TimePoint 2 및 JOBCODE TimePoint 2의 두 변수를 기반으로 고용 변화를 반영하는 범주 형 변수를 만들려고합니다.
본질적으로이 범주 형 변수를 사용하면 특정 직원이 1 ~ 1 시점에서 다음 이벤트 중 하나를 가지고 있는지 확인할 수 있습니다. 조직에 참여 (신규 직원), 변경된 JOBCODE (조직 내에서 이전) 또는 조직을 떠난 경우 ( 종료 / 분리).
아래 코드는 내 데이터 구조를 나타냅니다. 신입 사원은 시점 1에서 JOBCODE에 대해 공백 / null 값을 가지며, 종료 된 직원은 시점 2에서 JOBCODE에 대해 공백 / null 값을 가지며 위치를 변경 한 직원은 1 지점에서 2 지점까지의 필드에서 일치하지 않는 JOBCODE
blank / null에 대한 명령이 진행되는 한 여러 가지 다른 것을 시도했습니다. 나는 ==“”뿐만 아니라 isMissing을 사용해 보았으며! contains도 시도했습니다. 그들 중 누구도 작동하지 않습니다. 이 스타일 중 하나가 작동하는 한 선호되는 스타일이 없습니다.
전근하는 직원의 경우, 본인이 mylist에 포함 된 작업 코드를 유지했는지 여부에만 관심이 있습니다.
모의 데이터 테이블을 만들었습니다. 열 1은 예를 들어 일부 직원 ID입니다. 열 2와 3은 시점 1과 시점 2의 작업 코드를 나타냅니다. 열 4는 열 2 및 3에 입력 한 값을 기반으로 예상되는 출력입니다. 열 5는 설명을위한 참고 사항입니다.
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"};다음은 작동하는 것으로 보이는 코드 재 작업입니다.
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"
);
);