수색…


소개

정보 형식 및 형식은 SAS에 데이터를 읽고 쓰는 방법을 알려주는 데 사용됩니다. Informats는 외부 파일에서 데이터를 읽을 때 데이터 저장에서 일반적으로 사용됩니다. Informats는 PROC에서는 거의 사용되지 않습니다. 형식은 일반적으로 데이터 단계와 PROC 모두에서 사용됩니다.

비고

SAS 포맷은 숫자 또는 문자 값을 문자 값으로 변환합니다. 형식은 값을 표시하는 f}을 변경하는 format 또는 put .을 사용하여 적용하거나 형식화 된 값을 새 변수에 저장하기 위해 put 함수를 사용하여 put 할 수 있습니다.


형식에는 네 가지 범주가 있습니다.

  • 문자 - SAS가 문자 변수의 문자 데이터 값을 쓰도록 지시합니다.
  • 날짜 및 시간 - SAS가 날짜, 시간 및 날짜 시간을 나타내는 변수의 데이터 값을 쓰도록 지시합니다.
  • ISO 8601 - SAS에 ISO 8601 표준을 사용하여 날짜, 시간 및 날짜 시간 값을 쓰도록 지시합니다.
  • 숫자 - SAS가 숫자 변수에서 숫자 데이터 값을 쓰도록 지시합니다.

형식은 일반적으로 <formatname><w>.<d>; , w 는 임의의 십진수와 점을 포함하는 폭이며, d 는 소수 자리수입니다.


일반적인 날짜 형식 (SAS 날짜 값에 적용됨) :

  • date9. 예 : 02AUG2016
  • ddmmyyn8. 예 : 02082016
  • ddmmyy8. 예 : 02/08/16
  • yymmdd10. 예 : 20160802
  • year4. 예 : 2016

일반적인 숫자 형식 (숫자에 적용) :

  • comma11.0 예를 들어 1,234,567
  • comma12.2 예를 들어 1,234,567.00
  • 달러 dollar11.2 예 : 5,789.12 달러
  • nlmnlgbp11.2 예 : £ 2,468.02

기타 형식 :

  • $hex8. , 문자열을 16 진수로 변환
  • $upcase. , 대문자로 문자열 변환
  • $quote. 문자열을 따옴표로 묶으십시오.

전체 형식 목록은 여기에서 찾을 수 있습니다.> https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm

format 문 사용

format 문은 지정된 형식을 지정된 변수 에 표시 용도로만 적용합니다 . 즉, 기본 값은 변경되지 않습니다.

data example1 ;
  Date  = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */
  Date2 = '31AUG2016'd ;
  format Date monyy7. Date2 yymmddn8. ;
run ;
날짜 Date2
AUG2016 20160831

format 문을 사용하여 데이터 그룹화

프로 시저 내에서 형식을 적용 할 수 있습니다 (예 : 프로 시저 proc summary 또는 proc freq 내에서 그룹화를 변경하는 경우).


SAS 날짜 그룹화

data example2 ;
  do Date = '01JUN2016'dt to '31AUG2016'dt ;
    Days = 1 ;
    output ;
  end ;
run ;

/* Summarise by year & month */
proc summary data=example2 nway ;
  class Date ;
  var Days ;
  output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ;
  format Date yymmn6. ; /* e.g. 201606 */
run ;
날짜
201606 30
201607 31
201608 31
/* Summarise by month & year */
proc summary data=example2 nway ;
  class Date ;
  var Days ;
  output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ;
  format Date monyy7. ; /* e.g. JUN2016 */
run ;
날짜
JUN2016 30
JUL2016 31
AUG2016 31

형식을 사용하면 자연 정렬 순서가 유지된다는 이점이 있습니다.


예를 들어 sashelp.class 를 사용하여 각 이름의 첫 문자의 빈도를 비교하려고한다고 가정하십시오. substr() 함수를 사용하여 첫 번째 문자를 찾고 새 변수에 대해 proc freq 를 실행할 수 있습니다. 또는 $1. 을 (를) 적용 할 수 있습니다 $1. 형식을 Name 변수에 추가하십시오.

proc freq data=sashelp.class ;
  table Name ;
  format Name $1. ;
run ;
이름 카운트
에이 7
4
기음 2
기타

사용자 지정 형식

사용자 정의 형식 (사용자 정의 형식이라고도 함)은 다른 기본 형식과 마찬가지로 작성하여 사용할 수 있습니다.

/*Create new character format for state variables*/
PROC FORMAT;
VALUE $statef      'CA' = 'California'
                   'MA' = 'Massachusetts'
                   'NY' = 'New York';

/*Once created, you can use your custom format in PROC and DATA steps*/
PROC PRINT DATA=table;
FORMAT state-var $statef.;
RUN;

변수 state-var 는 새 형식에 따라 인쇄됩니다. 예를 들어 'CA' 값은 'California' 로 인쇄됩니다. 값이 'CT' 와 같이 형식화되지 않은 경우 해당 값은 데이터 세트에 나타나는대로 인쇄됩니다.

정보를 사용하여 데이터 읽기

Informats는 SAS에 데이터를 읽는 방법을 알려주고 informat 문으로 식별됩니다.

data test;
 infile test.csv;
 informat     id $6.
              date mmddyy10.
              cost comma10.2
 ;
 input @1 id
       @7 date
       @20 cost
 ;
run; 

Informats와 형식을 함께 사용하면 아래의 급여 변수와 같이 다른 형식으로 데이터를 읽고 쓸 수 있습니다.

DATA workers;
  informat first last $16.;
  informat salary 12.1;
  informat birthdate 8.;
  input 
    first $ 
    last $ 
    birthdate 
    salary;
  format salary dollar10.;
datalines;
John Smith 19810505 54998.5
Jane Doe 19950925 45884.5
Frank James 19600222 70000.5
Jamie Love 19630530 292000.5
;
run;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow