2013-12-11 6 views
2

SAS 매크로에있는 데이터 단계를 개정하고 있습니다. 현재 단일 데이터 형식이 전체 데이터 집합의 새 필드를 만드는 데 사용됩니다. 다른 형식이 데이터 집합의 다른 하위 집합에서 사용될 위치로 수정하려고합니다. (행이 속한 서브 세트를 나타내는 필드가 있습니다.)데이터 값에 따라 다른 형식을 적용하는 방법

if 명령을 사용하면이 작업을 수행 할 수 있지만 장래에 범주 수가 변경되면 변경해야합니다. 호출 symput을 사용하여 원하는 것을 얻을 수 있다고 생각하지만 해결 방법은 무엇인지 확신 할 수 없습니다. if 문을 사용하지 않고도이 작업을 수행 할 수 있습니까?

+0

좋은 질문 -이 동적으로 만드는 가장 좋은 방법은 확실하지 않습니다. +1 – DomPazz

답변

2

귀하의 질문은 완벽하게 명확하지 않다,하지만 당신은

newvar = put(oldvar,MYFMT.) 

같은 것을 수행하려는 경우 -의 모든>

if x=1 then newvar=put(oldvar,MYFMT.); 
else newvar=put(oldvar,MYFMT2.); 

그러나없이 문, 당신은 사용할 수 있는지 PUTN 또는 PUTC 이 옵션을 사용하면 런타임에 형식을 지정할 수 있습니다.

newvar = putn(oldvar,fmtvar); *optionally can specify w and d as separate arguments also; 
+0

이것은 정확히 내가 의도 한 바이며, putc를 사용하는 것은 호출 구문을 사용하고 해결하는 것보다 훨씬 간단합니다. –

+0

어쨌든 Symput/resolve가 작동하지 않습니다. 'put'을 사용한다면 컴파일 단계에서 형식을 결정해야합니다. – Joe

관련 문제