JSL의 COALESCE 함수처럼COALESCE 함수와 같이 열 X가 null 인 경우 대체 값 (예 : A)을 가질 수있는 함수를 찾고 있으며 방정식은 다음과 같을 수 있습니다.
COALESCE(:X, A)
X가 null이 아니면 X 값을 반환합니다.
X가 null이면 값 A를 반환합니다.
나는 우리가 약간 복잡한 방정식을 가지고 그러한 결과를 얻을 수 있다는 것을 이해했지만, 기본적으로 JSL에서 유사한 기능을 가질 수 있는지 궁금합니다.
당신의 도움을 주셔서 대단히 감사합니다.
다른Re : JSL의 COALESCE 함수처럼loc nonmissing을 사용하여 첫 번째 것을 찾을 수 있으며 누락 된 값과 빈 문자에 대해 작동합니다.
Names default to here( 1 );
dt = open("$SAMPLE_DATA\Big Class.jmp");
// blanking out some rows.
dt:age[[2, 5, 8]] = .;
dt:sex[[2, 9, 18]] = "";
dt:height[[2, 4, 14]] = .;
dt:weight[[1, 4, 14]] = .;
coalesce = function({list_of_whatever},
{DEFAULT LOCAL},
l = Evallist(list_of_whatever);
lnm = LocNonMissing(l);
if(nitems(lnm),
return(char(l[lnm[1]])); // assuming you'll want to use both numeric and character columns
);
);
// this should never be the weight value
New Column("Coalesce", character,
<<FORMULA></FORMULA>Re : JSL의 COALESCE 함수처럼내장 없음 COALESCE JSL의 기능. 그러나 단일 열의 경우 공식은 그렇게 복잡하지 않습니다.
if( !Is Missing( :X ),
:X, //:X is not missing
"A" //else
);
물론, 열이 많을수록 더 길어 지지만 여전히 나쁘지는 않습니다.
if(
!Is Missing( :X ), :X, //:X is not missing
!Is Missing( :Y ), :Y, //:Y is not missing
!Is Missing( :Z ), :Z, //:Z is not missing
"A" //else
);
누락() 목록 또는 행렬 인수를 취하고 해당 위치에 누락되었는지 여부를 나타내는 0과 1의 목록 또는 행렬을 반환합니다.
Is Missing( {"a", " ", "c"} ); // returns {0, 1, 0}
아마도 내가 그것을 사용하여 더 간단한 버전을 만들 수있는 것보다 더 영리한 사람 일 것입니다.
물론 선택한 방법을 사용하여 맞춤 기능 , Coalesce ().