2014-12-12 2 views
2

변수가 날짜의 경계에 속하는지 확인하려고합니다. MMDDYY10에 이미 DATE1이 싫습니다.SAS 및 INTNX 서식 지정

가 나는 Num 8 뭔가를 나에게 다시 제공하는 다음 코드

DATA GIANT; 
    SET GIANT; 
    UPPER_BOUND= intnx('week', DATE1, 2); 
run; 

를 사용합니다.

으로 복원하여 다른 날짜와 비교할 수 있습니다.

두 질문 :

  • 가 어떻게 날짜에 길이 8의 숫자를 변환 할 수 있습니다
      ?
    1. intnx가 날짜와 함께 작동하도록 설계된 이유는 무엇이며 동일한 형식이 아닌 숫자를 반환합니까?

      DATA GIANT; 
          SET GIANT; 
          UP_DATE=INPUT(PUT(UPPER_BOUND, 8.), MMDDYY10.); 
          FORMAT UP_DOS MMDDYY10.; 
      run; 
      

      을하지만 지금은 모두 null로 온다 :

  • 나는 다음과 같이 변환하려고 노력했다.

    답변

    5

    SAS 날짜는 항상 숫자 (1960 년 1 월 1 일 이후의 일수)입니다. 날짜 형식은 단순히 숫자를 읽을 수있게 만드는 방법 일뿐입니다. INTNX는 날짜가 모두이기 때문에 숫자를 반환합니다. 새로운 변수에 날짜 형식을 적용하는 것은 당신에게 달려 있습니다.

    매우 간단합니다. 당신은 거의 당신의 시도에서 그것을 얻었지만, 당신은 입/담을 사업을 필요로하지 않습니다.

    data giant; 
        set giant; 
        upper_bound=intnx('week',Date1,2); 
        format upper_bound MMDDYY10.; 
    run; 
    

    INPUT는 값 (일반적으로 다수)으로 사람이 읽을 수있는 텍스트를 변환한다. PUT은 값을 사람이 읽을 수있는 텍스트로 변환합니다. PUT(INPUT(...))은 일반적으로 형식이 지정된 값을 다른 종류의 형식화 된 값으로 변환하는 데 사용됩니다 (예 : "1/1/1960"문자열을 "01JAN1960"으로 변환). INPUT(PUT(...))PUT이 만든 문자열 (예 : 특정 날짜 요소 또는 그와 비슷한 것을 읽는 것과 같은)을 구문 분석하지 않는 한 일반적으로 사용되지 않습니다. 두 경우 모두 대부분의 경우 유형을 PUT 또는 다른 방식으로 INPUT에서 숫자로 변경하고 실제 저장된 값을 변경합니다.

    숫자 열에 형식을 적용하면 열이 숫자로 표시되고 (일반적으로 좋음) SAS는 해당 숫자를 표시하여 사용자가 이해할 수 있도록 (보통 좋음) 알려줍니다. 그래서 값은 19857이지만 표시되는 것은 05/14/2014입니다.

    +0

    고맙습니다. 그것은 더 의미가 있습니다. –

    +0

    당신은 그 사람입니다, 조. –