2009-06-24 4 views
7

SAS에 Oracle NVL 기능이 있습니까? 예를 들어SAS에서 누락 된 값을 0으로 처리하십시오.

, 나는 말한다 SAS의 where 절이있는 경우 : myVar에 =이 행을 포함하지 않을

where myVar > -2; 

합니다. 뭔가 같이 거기

where NVL(myVar, 0) > -2 // or some SAS equivalent 

:

where myVar > -2 or missing(myVar) 

내가 좋아하는 뭔가를 할 수 있도록하고 싶습니다 :

내가 0으로 누락 된 값 치료하려면

, 내가 말을해야 SAS에?

+1

myVar =가있는 행이 아닌 SAS 데이터에만 적용됩니다. 포함되지 않습니다. 그 이유는 누락 된 값이 NULL이고 NULL과의 비교가 항상 FALSE로 평가되기 때문입니다. 원시 SAS 데이터에서 누락 된 값은 0보다 작은 음수가 아닌 숫자로 처리됩니다. 그래서 "where myVar> -2;" 네이티브 SAS 데이터에서 작동 할 때 누락 된 값으로 실제로 작동합니다. –

답변

13

coalesce function이 작업을 수행해야합니다.

where coalesce(myVar,0) > -2 

SAS 9에서이 기능을 사용할 수 있는지 확실치 않아서 실제로 오래된 SAS 버전 인 경우 작동하지 않을 수 있습니다.

7

병합 함수를 사용하는 것이 올바른 방법입니다.

하지만 유착이 구현되지 SAS의 이전 버전이있는 경우, 당신은이 트릭 사용할 수 있습니다 : 당신이에, 비 누락 된 번호를 추가하기위한 SAS의 sum function를 사용하는 경우

where sum(myVar,0) > -2 

을 합계는 결과를 누락되지 않게합니다.

따라서 sum 함수로 0을 추가하면 누락 된 값이 0으로 변환되고 누락되지 않은 값은 변경되지 않습니다.

+1

+1 : 그건 대단한 제안입니다! 더 이상 SAS 8 제품을 지원하지 않기 때문에 병합이 가능한지 여부는 신경 쓰지 않습니다.하지만 그렇게했다면 독창적 인 해결 방법이 될 것입니다. – Adnan

-1

y 할 수있는 한 가지는 입니다. 처럼 배열 varlistname var1 var2 var3 varn; 배열 <> 인 경우. 다음 출력;

누락 값이없는 데이터 세트를 출력합니다.

관련 문제