2014-01-16 7 views
1

이 숫자를 사용하여 가중치를 생성하려면 천장과 바닥 값 (203,400)을 찾으려면 하나의 번호가 필요합니다. 평균. 이 숫자에서 내가 원하는 : 200000 및 210000 그래서 나는이 작동하지 않는 것을 사용 된 코드는 다음과 같습니다 ERROR 72-185 :SAS ceil/floor는 큰 숫자를 사용하고 ceil/floor에서 가장 가까운 10,000까지

S1CovA_ceil = ceil(S1CovA,10000); 
S1CovA_floor = floor(S1CovA,10000); 

나는이 프로그램을 실행하면, 내가 이러한 오류를 얻는 CEIL 함수 호출을 인수가 너무 많습니다. 오류 72-185 : FLOOR 함수 호출에 인수가 너무 많습니다.

누구나 내가 사용할 수있는이 SAS 코드를 다른 방법으로 알고 있습니까?

답변

1

CEILFLOOR 단지 소수를 제거 - 구체적으로 정수 값으로 반올림. 당신이 원하는 경우 10,000의 복수 (/ 아래 위)로 반올림, 당신은 좀 더 복잡하게 할 필요가 :

S1CovA_ceil = ceil(s1covA/10000)*10000; 

그리고 바닥에 대해 동일합니다. 기본적으로 원하는 반올림 수준으로 나누고 나머지를 ceil/floor로 반올림 한 다음 다시 곱해야합니다.

아쉽게도 SAS는 직선형 정수 반올림을 제외하고 특정 방향으로 반올림을 허용하지 않습니다.

0

S1CovA_ceil = ceil(S1CovA/10000)*10000; 
    S1CovA_floor = floor(S1CovA/10000)*10000; 
0

당신은 또한 라운드() 함수를 사용하려고 ...

 
%LET ROUNDTO = 10000 ; 
data xyz ; 
    S1CovA_ceil = round(S1CovA+(&ROUNDTO/2),&ROUNDTO) ; 
    S1CovA_floor = round(S1CovA-(&ROUNDTO/2),&ROUNDTO) ; 
run ;