일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Deepfake
- HDMI-DVI
- 토드부크홀츠
- 티스토리챌린지
- FPT #베트남기업
- 베트남 #자동차 #베트남자동차보급율
- r
- 지방자치단체조합
- 일본 뜀틀 응원 기적 감동
- SAS 날짜
- 강의자료
- 기계학습
- 리더쉽
- 오블완
- SAS 계산오류
- SAS
- 사례기반추론
- 베트남삼겹살
- R 프로그래밍
- 책모음
- 딥페이크
- subset
- 데이타마이닝 툴
- SAS 연산오류
- SAS에서 한글사용
- hdmi젠더
- 웨카
- 얼굴합성앱추천
- 뉴스로 이해하는 베트남
- 스틱pc
- Today
- Total
지식노동자의 노트
Data Preprocessing Using SAS - 수술실 사용시간 분포 구하기 본문
<문제>. 수술ID, 수술시작시간, 수술끝시간 이 저장된 데이타로부터 각 시간대별 수술실 사용현황을 구하시오.
<Data Sample형태>
<SAS Program>
/****************************************************************************
수술실별 * 시간대별 사용현황
*/
libname myset "C:\data";
data smpl01;
set myset.surgery_time_sample;
run;
****************************************************************************;
*시간대별 수술실 점유시간, 총 수술시간 구하기;
*Compute Time;
data smpl02;
set smpl01;
total_time = intck( 'minute', start_time, end_time) ; /*총수술시간*/
if total_time = . then delete; /*수술퇴실시간 없는 경우 삭제*/
run;
*수술건별 시간대별 사용시간 체크;
data smpl03(drop= i);
set smpl02;
ed_line = end_time - (minute(end_time)*60); /*마지막 시간*/
format ed_line datetime16.;
do i=1 to 10000 while(start_time < ed_line);
if i = 1 then output;
start_time = start_time + (60*60);
output;
end;
run;
*시간대별 정시 설정;
data smpl04;
set smpl03;
range_from = hms(hour(start_time),00,00);
range_to = hms(hour(start_time) + 1,00,00);
format range_from range_to time8.;
run;
*정시로부터 수술실 점유시간;
proc sort data = smpl04;
by operation_id start_time;
data smpl05;
set smpl04;
by operation_id start_time;
if first.operation_id then cover_time = intck( 'minute', timepart(start_time), range_to) ;
else if last.operation_id then cover_time = intck( 'minute',range_from, timepart(end_time)) ;
else cover_time = 60;
if first.rec_id = 1 and last.rec_id = 1 then cover_time = total_time; /*동시간에 수술이 끝날경우*/
run;
*검증 : 총 수술사용시간 = sum(시간대별 점유시간);
proc sql;
create table checking01 as
select operation_id
,sum(cover_time)
, total_time
from smpl05
group by operation_id;
quit;
data checking02;
set checking01;
where _TEMG001 ^= total_time;
run;
/*수술실별 시간대별 사용시간*/
ods listing close;
ods html;
proc means data = smpl05 sum maxdec=0 ;
class op_room_num range_from;
var cover_time;
run;
ods listing;
ods html close;
'SAS' 카테고리의 다른 글
SAS 중복데이타 제거 및 추출 (0) | 2012.05.08 |
---|---|
SAS 날짜 다루기의 모든 것 Everything about SAS Date (0) | 2012.05.08 |
HMS Function (시, 분, 초 값으로 부터 시간값을 구한다) 숫자를 시간으로 (0) | 2012.05.03 |
문자형 날짜시간값을 SAS datetime으로...... (0) | 2010.08.04 |
SAS Format Tutorial (0) | 2010.07.26 |