해당 input문을 완성하여,
data q2;
/* input문*/
cards;
66.5 kim f
29 Jun 17
67.28 yunm
12-May-2020
;
run;
proc print;
run;
이러한 데이터를 출력해야하는데, 발상이 잘 떠오르질 않네요. input 관련 문제는 경우의 수가 너무 많아서 어렵군요... 감사합니다.
이런 반정형의 데이터를 자유자재로 읽어 들일 수 있는 기능이 SAS 큰 장점 중 하나인 것 같습니다.
5가지의 조건을 반영한 input 문을 아래 코드와 같이 작성하면 될 것 같네요.
다만 input 문으로 처리가 안 되는 부분은 다른 문장의 기능을 빌려서 구현을 해야 할 듯 합니다.
data q2; infile datalines truncover; input age name $3. @10 gen $1. / date0 $11.; date=input(compress(date0,' -'),date.); format date date9.; drop date0; cards; 66.5 kim f 29 Jun 17 67.28 yunm 12-May-2020 ; proc print; run;
SAS 9.4 M8 버전에서 테스트 하였습니다.
질문 답변 드립니다.
1. age 변수와 name 변수 사이에 띄어쓰기가 들어가 있습니다. 이것으로 구분됩니다.
2. 네. name 변수의 길이는 3byte입니다.
3. ge 변수는 1byte가 맞으며, 각 행에서 10열로 위치가 동일합니다.
4. 네. 위의 2가지 형식으로만 날짜가 입력됩니다.
5. 네. 데이터의 각 레코드가 2개의 행으로 구성됩니다.
감사합니다.
이런 반정형의 데이터를 자유자재로 읽어 들일 수 있는 기능이 SAS 큰 장점 중 하나인 것 같습니다.
5가지의 조건을 반영한 input 문을 아래 코드와 같이 작성하면 될 것 같네요.
다만 input 문으로 처리가 안 되는 부분은 다른 문장의 기능을 빌려서 구현을 해야 할 듯 합니다.
data q2; infile datalines truncover; input age name $3. @10 gen $1. / date0 $11.; date=input(compress(date0,' -'),date.); format date date9.; drop date0; cards; 66.5 kim f 29 Jun 17 67.28 yunm 12-May-2020 ; proc print; run;
SAS 9.4 M8 버전에서 테스트 하였습니다.
감사합니다. 많은 도움이 되었습니다.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!