[SAS Programming] 날짜 변수 속성(Type) 바꾸기 (Input, format)
임상시험 데이터들을 접하다가 보면 날짜와 관련 변수들을 다루어야 할 때가 많은데, 이 날짜 관련 데이터들은 SAS Date 변수이나 Character Type 으로 정의된 변수로 저장될때가 있다. 데이터마다 저장되는 방식이 일괄되지 않아서 변수의 정의 방식을 바꾸어야 할 필요가 생긴다.
1) 다른 데이터 셋에서 Merge를 할때 두 변수의 속성들이 일치하지 않는 경우
2) 리포트를 할때 Character인 날짜 변수를 사용하여도 상관이 없겠지만, 어떤 질병의 지속기간을 구하기 위해서 두 날짜들을 빼는 연산을 해야 될 경우에는 (e.g., Duration=End Date - Start Date +1) SAS Date Type으로 계산을 해야된다.
본 포스팅에서는 Input과 Format을 이용해서 날짜 속성을 가진 변수를 Character Type을 가진 변수로, Character Type을 가진 변수를 날짜 속성으로 가진 변수로 바꾸는 방법을 예제를 통해서 설명할 것이다.
- Character Type의 변수를 날짜 타입으로 가진 변수로 전환하기
예제 데이터셋 "date"
data date;
txt1="01DEC2020";
txt2="09-08-2020";
txt3="2020-10-14";
run;
위에 "date" 라고 정의된 데이터셋은 txt1, txt2 라는 변수를 포함하며, 이 변수들은 각기 다른 형태의 날짜 데이터를 Character Type으로 가지고 있다. 이 변수들을 SAS Date 변수로 바꾸려면 어떻게 해야할까?
이때는 SAS Data Step의 Format Statement와 Input Function을 사용하면 된다.
결과 데이터셋 "date2"
data date2;
set date;
format char_to_date1 date9.
char_to_date2 mmddyy10.
char_to_date3 yymmdd10.;
char_to_date1=input(txt1, date9.);
char_to_date2=input(txt2, mmddyy10.);
char_to_date3=input(txt3, yymmdd10.);
run;
1. Format Statement를 사용해서 새로 이용할 변수와 날짜 타입(date9., mmddyy10., yymmdd10.) 을 정의한다.
2. Input function을 이용해서 삽입될 텍스트 변수와 그 변수의 형태를 맞추어서 함수에 적용한다. (예를 들어서 "01DEC2020" 형태는 Date9.의 형태이다)
- 날짜 타입으로 가진 변수를 택스트 변수로 변환하기
이번에는 반대로 날짜 타입을 가진 변수들을 텍스트 변수로 바꾸어 보려고 한다.
예제 데이터셋 "date"(위의 예제와 다른 데이터 셋이니 헷갈리지 말자)
data date;
format date1 date9. date2 mmddyy10. date3 yymmdd10.;
date1=input("01DEC2020",date9.);
date2=input("09-08-2020",mmddyy10.);
date3=input("2020-10-14",yymmdd10.);
run;
data date2;
set date;
format txt1 txt2 txt3 $10.;
txt1=put(date1,date9.);
txt2=put(date2,mmddyy10.);
txt3=put(date3,yymmdd10.);
run;
이번에도 마찬가지로 format으로 저장이 될 변수의 형태를 정의하는 점에서는 이번에는 input이 아니라 put을 사용해야한다.
Input이 Character Type->Numerical Type(Date 속성을 포함)의 변환을 담당한다면,
Put은 Numerical Type(Date 속성 포함)->Character Type을 담당하기 때문이다.
여기서 format 뒤에 $ xx.부분은 본인이 길이를 바꿀 수 있고, format 대신에 length $ xx.를 사용해도 문제가 없다.
글이 도움이 되셨다면 구독과 하트 부탁드립니다 !
'데이터 사이언스 이야기 > R & SAS Programming' 카테고리의 다른 글
[R Programming] 데이터 내 여러 변수 중 이름이 비슷한 변수 선택하기 (0) | 2022.02.20 |
---|---|
[SAS Programming] LOCF - Last Observation Carried Forward (0) | 2021.04.16 |
[R Programming] R로 하는 데이터 전처리 & 시각화 예제 (0) | 2019.04.01 |
댓글