Download presentation
Presentation is loading. Please wait.
1
SAS 프로그래밍 – 데이터 스텝 SAS 소개 및 Data Step 심평원 표본자료 불러오기 신주영 2015. 3.14
성균관대학교 강의(2) SAS 프로그래밍 – 데이터 스텝 SAS 소개 및 Data Step 심평원 표본자료 불러오기 신주영
2
심평원자료활용 자료분석강의- 6회 1. 심평원자료 구조 이해하기(3/7)
20, 30, 40, 53, 약가마스터, 수가마스터 구조 2. SAS 프로그래밍 Data-step(3/14) 실습: 심평원 표본자료 SAS 로 불러오기 3. SAS 프로그래밍 SQL(3/21) 실습: 노인 해열진통소염제 사용평가 4. SAS프로그래밍 Macro(3/28) 실습: 임신부 혈당강하제 사용평가 5. 심평원자료 이용한 연구주제 발표(4/4) (학생발표) 6. 약물부작용 인과관계 평가(4/11) 실습: 후향적 코호트연구 분석 6주 수강 이후, 심평원자료이용한 연구결과 과제물 제출
3
심평원 표본자료의 구조 명세서 (20) 진료내역 (30) 처방전내역 (53) 약제급여 분류코드: 의약품의 경우 제품코드
심평원 표본자료의 구조 명세서 (20) 진료내역 (30) 처방전내역 (53) 약제급여 명세서연결코드 수진자고유번호 명세서연결코드 명세서연결코드 급여적용개시일자 급여적용종료일자 품명 규격 단위 수진자고유번호 요양기관고유번호 입원, 외래 구분 입내원일수 서식구분코드 주상병 부상병 진료과목 요양개시일자 연령 성별 추출확률 샘플가중치 분류코드 분류코드 분류코드 항코드 목코드 분류코드구분 일반명코드 분류코드 단가 일일투여량 총투여일수 줄번호 분류코드구분 1회투약량 1일투약량 총투여일수 단가, 금액 일반명코드 제조회사명 복지부효능코드 투여경로 급여구분 일반명코드 일반명 단가 분류코드: 의약품의 경우 제품코드 표본자료에는 의약품에 대한 분류코드 부재 일반명코드(성분명코드 활용할 것)
4
심평원 표본자료 구성 표본자료 nps_20_01.txt nps_20_02.txt nps_20_03.txt
yhiko
5
심평원 표본자료 변수목록(Layout) Sheet 구분 20table_명세서일반내역 30table_진료내역 40table_상병
YKIHO_요양기관현황 표1. 진료과목코드 표2. 특정기호코드
6
약가마스터 찾기
7
수가마스터 찾기
8
약가마스터, 수가마스터 구조 약제급여목록20120701.xls 복지부분류코드
주성분코드 (식약청 허가 목록 코드부여체계와는 별개) 제품코드, 제품명, 업체명 규격, 단위, 전문/일반 상한금액 수가파일 xls 수가코드 한글명 예) 제왕절개술, 유도분만 등 영문명 의원단가
9
실습자료 약제급여목록, 분석대상 성분명 코드 정리
11
약물목록 정리 시 주의할 점 2012년 1년간의 심평원 청구자료를 활용한다면, 2011년 12월 심평원 약제급여목록 활용
2012년 매월 심평원 약제급여목록 활용 2013년 12월 심평원 약제급여목록 활용 누락되는 성분명이 없도록 주의 할 것
12
약물목록 정리 시 주의할 점 우리나라 식약청 허가성분전체 급여의약품: 심평원 약제급여목록 확인 비급여의약품
100/100 본인부담 약제 의사의 진단적 판단에 의하여, 급여 또는 100/100본인부담 예시) 제픽스, 바이옥스, 세리브렉스 캅셀 등 (진짜) 비급여의약품 비아그라, 비만치료제 등
13
Ⅰ. SAS 소개 Ⅱ. 라이브러리생성, 자료불러오기 실습 Ⅲ. Data Step 소개 및 실습 Ⅳ. 표본자료 불러오기 실습
14
Ⅰ. SAS 소개
15
Ⅰ. SAS 소개 □ SAS 화면 구성 편집기 창 탐색기 창 로그 창 출력 창
16
Ⅰ. SAS 소개 □ SAS 화면 구성 • 편집기 창 : 자료, 프로그램 명령어의 입력, 편집, 저장, 열기를 위해 사용
• 편집기 창 : 자료, 프로그램 명령어의 입력, 편집, 저장, 열기를 위해 사용 • 로그 창 : 편집기창에서 작성한 프로그램 실행 시 오류 여부, 오류 위치 확인 • 출력 창 : 프로그램 결과물을 화면에 출력 • 탐색기 창 : SAS 파일의 열기, 이동, 삭제, 복사 등 프로그램 편집기의 기능
17
Ⅰ. SAS 소개 □ SAS programing의 일반적 절차 Data Step Proc Step RAW DATA
(EXCEL, Text …) Data Step SAS DATA (XXX.sas7bdat) Proc Step OUTPUT
18
Ⅰ. SAS 소개 □ SAS programing의 기본 구조 Data Step Proc Step RAW DATA
(EXCEL, Text …) • Data 새로 만들기 • 기존 Data 편집하기 • Data 합치기 등 • Data를 이용하여, 통계분석 등 원하는 작업을 수행 Data Step SAS DATA (XXX.sas7bdat) Proc Step OUTPUT
20
Ⅰ. SAS 소개 □ SAS 명령문의 형식 • SAS의 모든 문장은 ;(semicolon)으로 마침
• 한 줄에 여러 개의 명령문 사용 가능 • 모든 실행문은 run; 에 의해 프로그램 수행후 종료 • SAS 프로그램 내의 코멘트 사용 1) 블록주석 : 주석 시작시 /* ~~, 주석 종료시 ~~ */ 2) 문장주석 : 문장 시작시 *, 문장 종료시 ;
21
Ⅱ. 라이브러리 생성, 자료 불러오기
22
Ⅱ. 라이브러리 생성, 자료불러오기 □ SAS Library • SAS data의 저장 장소
• 시스템내의 물리적 경로(즉, 폴더)에 별칭을 부여한 것
23
Ⅱ. 라이브러리생성, 자료불러오기 □ SAS Data의 구조 • 값들의 모임
• 값들의 모임 • 관측치(observation, 행)와 변수(variables, 열)로 구성
24
Ⅱ. 라이브러리생성, 자료불러오기 □ SAS Library • 임시 라이브러리(Work)
• 할당방법 Ex) LIBNAME kmh "c:\mydata"; 폴더 먼저 만들고 해야 함 LIBNAME libref명‘물리적 경로명’; /* libref명은 8자리 이하 */
28
Libname test ‘C:\SAS강의예제’ ; Libname test ‘C:\SAS강의예제’ ;
33
-실습. 라이브러리 생성 및 약물자료불러오기- <1. 해열진통소염제 약물목록.xls>
실습자료 <1. 해열진통소염제 약물목록.xls> 붉은 색 글씨 부분 : 한국
34
Ⅲ. Data Step □ SAS Data의 생성 Data Step
35
Ⅲ. Data Step □ SAS Data의 이름 및 변수명 생성규칙 • 최대 32자리까지 가능
• 최대 32자리까지 가능 • 영문자(A~Z)나 _으로 시작하고, 나머지는 영문자, 숫자, _ 가능 • blank 및 특수문자(? / * #) 사용 불가 • 대소문자 구분 없음 • 변수 type은 문자/ 숫자로 구분, 단, 날짜값은 숫자로 인식 ( 1960/ 1/ 1 : 0, 1959/12/31 : -1, 1960/ 1/ 2 : 1 ) • 결측값(missing value) : 문자는 blank(공백), 숫자는 . 으로 표현
36
Ⅲ. Data Step □ 데이터 불러오기 - 심평원 표본자료는 특수 포맷 형태 - 텍스트 파일
data pas_formatted; * 파스 의약품 유해사례 보고건수; informat drug_birth yymmdd10.; informat drug_name $20. ; informat drug_code $9. ; informat company $15. ; informat cnt comma6. ; format drug_birth yymmdd10. ; format drug_name $20. ; format drug_code $9. ; format company $15. ; format cnt comma6. ; input drug_birth drug_name $ drug_code $ company $ cnt ; cards; 노펜첩부제 중외제약 96 맨담케토플라스타 보령제약 5 맨담플루비플라스타 보령제약 1; run;
37
※ 특수 포맷으로 입력된 데이터 읽기 → Informat: SAS에게 Raw Data를 어떻게 읽을지 형식을 알려주는 것 - Raw data를 무슨 타입(문자/숫자)으로 몇 자리만큼(길이) 읽을지 비표준 데이터(1960/01/01또는 1,234 등)의 경우 데이터 생김새 지시 ∙format: SAS에게 Raw Data를 어떻게 보여줄지 형식을 알려주는 것
38
※ Infile 문장의 이해 ※ Infile 문장의 옵션 data kids_name; /*약물목록*/;
infile 'C:\mydata\약물목록.txt' dlm = ' ' ; input no team $ name $; run; ※ Infile 문장의 옵션 옵션 의미 예시 Dlm= 구분자 정의, 기본 구분자는 공백 Dlm=’,’ DSD - 연속된 구분자가 있을 경우 결측값으로 처리 ex) 20,30,,50 => ( ) VS ( ) - “”사이에 존재하는 구분자를 구분자가 아닌 값의 일부로 인식 ex) "George Bush, Jr." Missover 레코드의 끝을 만났음에도 input문장에 아직 처리되지 않은 변수들이 남은 경우 그 변수 값을 missing 으로 처리 missover Lrecl= record의 길이, 기본 길이는 256바이트 Lrecl=1000 Firstobs= 읽어올 raw data의 시작 record를 지정 Firstobs=2 Obs= 읽어올 raw data의 끝 record를 지정 Obs=100
52
실습자료 2. dataset실습프로그램.sas
53
Ⅳ. 심평원 표본자료 불러오기
54
심평원자료 SAS file로 불러오기 한글파일 열기 1. 심평원 자료를 저장할 library를 생성한다.
libname (library name) '(library 생성 위치)'; run; 예) libname nps_2009 'D:\HIRA-NPS-2009\HIRA-NPS(2012_5_17)\sas_nps'; run; 2. 심평원 자료에서 명세서 일반내역(20 table) 불러오기 3회로 나누어 불러오며, 각각 Table20_01, Table20_02, Table20_03이라 한다. ( 을 제외한 부분은 동일 명령어로, “Table20_○○” 의 ○○부분에 01, 02, 03을 각각 입력하여, 각각의 명령어를 실행한다.)
55
심평원자료 SAS file로 불러오기(20) 명세서 일반내역정보 data NPS_2009.TABLE20_○○;
infile 'd:\HIRA-NPS-2009\HIRA-NPS(2012_5_17)\HIRA-NPS(2012_5_17)\nps_20_○○.txt' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ; informat NO best. ; informat FORM_CD ; informat RECU_FR_DT yymmdd6. ; informat agg best. ; informat gen ; informat dif ; ..(중략) format NO best. ; format FORM_CD ; format RECU_FR_DT yymmdd6. ; format agg best. ; format gen ; format dif ; ..(중략) Input NO FORM_CD $ RECU_FR_DT agg ; if _ERROR_ then call symputx('_EFIERR_', run;
56
심평원자료 SAS file로 불러오기(30) 진료내역정보
12회로 나누어 불러오며, 각각 Table30_01, Table30_02, ~ Table30_12 이라 한다. ( 을 제외한 부분은 동일 명령어로, “Table30_○○” 의 ○○부분에 01, 02, …, 12을 각각 입력하여, 각각의 명령어를 실행한다.)
57
심평원자료 SAS file로 불러오기(40) 상병명 정보 data NPS_2009.TABLE40_01;
%let _EFIERR_ = 0; /* set the ERROR detection macro variable */ infile 'd:\HIRA-NPS-2009\HIRA-NPS(2012_5_17)\HIRA-NPS(2012_5_17)\nps_40_01.txt' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ; informat keycode best. ; informat DSBJT_CD ; informat SEQ_NO ; informat SICK_SYM ; format keycode best. ; format DSBJT_CD ; format SEQ_NO ; format SICK_SYM ; Input keycode DSBJT_CD $ SEQ_NO $ SICK_SYM $ ; if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */ run;
58
[SD-DUR-12-1.0] 심평원자료 SAS file로 불러오기(53) 처방전 상세내역1
data NPS_2009.TABLE53_01 ; %let _EFIERR_ = 0; /* set the ERROR detection macro variable */ infile 'D:\HIRA-NPS-2009\HIRA-NPS(2012_5_17)\HIRA-NPS(2012_5_17)\nps_53_01.txt' delimiter = ',' MISSOVER DSD lrecl=32767 firstobs=2 ; informat keycode best. ; informat LN_NO ; informat DIV_TYPE_CD ; informat DD_MQTY_FREQ best.; informat DD_EXEC_FREQ best.; informat MDCN_EXEC_FREQ best.; informat UN_COST best.; informat AMT best.; informat GNL_NM_CD ;
59
[SD-DUR-12-1.0] 심평원자료 SAS file로 불러오기(53) 처방전 상세내역2
format keycode best. ; format LN_NO ; format DIV_TYPE_CD ; format DD_MQTY_FREQ best.; format DD_EXEC_FREQ best.; format MDCN_EXEC_FREQ best.; format UN_COST best.; format AMT best.; format GNL_NM_CD ; input keycode LN_NO $ DIV_TYPE_CD $ DD_MQTY_FREQ DD_EXEC_FREQ MDCN_EXEC_FREQ UN_COST AMT GNL_NM_CD $ ; if _ERROR_ then call symputx('_EFIERR_',1); /* set ERROR detection macro variable */ run;
60
실습자료 심평원표본자료 3. 표본자료불러오기프로그램.sas
Similar presentations