통수정의 성장기

SAS_다양한 INPUT 명령문의 형식 본문

SAS통계프로그래밍

SAS_다양한 INPUT 명령문의 형식

jinijinhee 2022. 6. 7. 21:25

목차

1. 공백문자로 구분된 데이터 읽기

2. 고정 포맷으로 입력된 데이터 읽기

3. 특수 포맷으로 입력된 데이터 읽기

4. 하나의 개체가 여러줄에 입력되어 있는 데이터 읽기

5. 여러개의 개체가 한 줄에 연속해서 입력되어 있을때

6. 기본적인 INFILE 옵션


1. 공백문자로 구분된 데이터 읽기

DATA mysas.grade;
	INPUT id name $ class $ score grade $;
CARDS;
2590 john Stat 80.3 A
	3569 willy Math . B
7048    younghe . 30.6 C
9087 . Eng 100   A
. e.t . . . 
;
RUN;

자유포맷에 의한 입력에서 지켜야 할 규칙

  1. 데이터의 자룟값들은 적어도 하나 이상의 공백문자에 의해 분리
    • 다른 구분자를 사용한 데이터가 입력되어 있는 경우 : INFILE 명령문과 DLM옵션 사용해 구분자 지정해 줄것.
  2. 각 결측값은 한개의 마침표 . 로 표시
  3. 문자변수 자료값은 공백문자 포함하지 않아야, 길이가 최대 8자리.
    • 문자 변수의 자료값이 8자리 넘으면 앞에서부터 8자리만을 데이터셋에 저장.
    • LENGTH명령문을 사용 : 문자변수가 저장될 바이트 수를 미리 선언.

2. 고정 포맷으로 입력된 데이터 읽기

DATA mysas.grade1;
	INPUT name $ 11-18 class $ 20-35 classid 1-4 score 36-40 grade $ 41;
CARDS;
259067048 김철수    Statistics      80.3A
356989087 박민호    Mathematics         B
704842534 이영희                    30.6C
908727844           English         100 A
424573465 남궁수지 Computer Science
; 
RUN;

고정포맷으로 입력 : INPUT 변수 ($) 1-3

장점 :

  1. 값 사이에 공백문자 입력 필요X
  2. 문자변수가 공백 포함 가능 최대 32767자리
  3. 결측값 공백문자로 처리 가능
  4. 필요없는 변수에 대한 자룟값을 읽지 않을 수 있다.
  5. 읽을 열의 위치가 지정되므로 어떤 순서로 읽어도 무방하며, 같은 열을 반복하여 읽을 수 있다.

3. 특수 포맷으로 입력된 데이터 읽기( 🌟🌟🌟🌟🌟)

표준데이터 : 영문자 또는 한글, 숫자, 부호, 소수점 등으로 입력 된 데이터

비표준데이터 : 표준데이터 외에 다른 특수문자와 함께 입력되어있는 데이터

EX)10,000(콤마) $100(달러), 16진수로 입력된 자료, 날짜자료

→특별한 형식 가진 비표준 데이터의 경우 : 입력포맷 사용

입력포맷 : 문자형, 숫자형, 날짜형

DATA mysas.dept;
	INPUT name $18. +1 hired DATE7. +1 salary 5.;
	FORMAT hired DATE7. ;
CARDS;
Martin, Virginia   09aug80 34800
SIngleton, MaryAnn 24apr85 27900
Leighton, Maurice  16dec83 32600
Freuler, Carl      15feb88 29900
Cage, Merce        19oct82 39800
;
RUN;
DATA mysas.club;
	INPUT idno name $ 6-19 @25 team $6. strtwght endwght;
CARDS;
1023 David Shaw         red    189 165
1049 Amelia Serrano     yellow 189 165
;
RUN;

열이동 : + @

+n: 옆으로 n칸 이동해라

@25 : 25번째 열로 이동해라

4. 하나의 개체가 여러줄에 입력되어 있는 데이터 읽기

DATA mysas.club;
	INPUT idno name $ 6-19 / team $6. #3 strtwght endwght;
CARDS;
1023 David shaw
red
189 165
1049 Amelia Serrano
yellow
189 165
;
RUN;

행이동 : / #

/ : 다음줄의 첫열

#n : 포인터의 위치를 데이터의 매 n번째 행의 첫 열로 이동.

입력 포맷과 출력 포맷은 별도이다 !

5. 여러개의 개체가 한 줄에 연속해서 입력되어 있을때

: @@ 쭉 연달아 읽어라는 뜻

DATA mysas.double;
	INPUT x y @@;
CARDS;
1 2 3 4
5 6 7
8 9 10
;
RUN;

6. 기본적인 INFILE 옵션

  • FIRSTOBS=n : n번째 줄에서부터 자료를 읽기 시작하도록 지정
  • MISSOVER : 자룟값을 읽지 못한 변수에 대해서 결측값으로 처리
  • DLM=옵션 : 하나 이상의 문자 또는 특수기호 등을 자료값의 구분자로 지정(결측값 따로 표기 안하고 패스함.)
  • DSD : ,콤마를 구분자로 사용, 근데 결측값 인지해서 .으로 나타냄. 인용부호 안에 있는 값만 나옴.
  • EXPANDTABS : 구분자를 탭 문자로 지정
Comments