我想按小时计算急诊室内的患者人数,我很难概念化有效的代码。
我有两个时间变量,"时间检查时间"one_answers"发布时间"。这些日期/时间变量显然是任意的,"发布时间"变量将在"签入时间变量"之后出现。
我希望在给定的一天的输出看起来像这样:
Hour Midnight 1am 2am 3am 4am.....
# of Pts 34 56 89 23 29
因此,例如,凌晨1点,当前在ED中有56名患者 - 考虑了检查时间和释放时间。
我最初的想法是:1(圆形变量2(写一个代码代码,看起来像这样...
data EDTimesl;
set EDDATA;
if checkin = '1am' and release = '2am' then OneAMToTwoAM = 1;
if checkin = '1am' and release = '3am' then OneAMToTwoAM = 1;
if checkin = '1am' and release = '3am' then TwoAMToThreeAM = 1;
....
run;
但是,这给了我停顿,因为我觉得有一个更有效的方法!
预先感谢!
我在网上找到了一个代码,可以回答问题!请参阅下面:
data have (keep=admitdate disdate);
/* generate some admission and discharge date time variables*/
year=2015; /* for example all of the admits are in 2015*/
format admitdate disdate datetime20.;
do day= 1 to 20;
do month=1 to 12;
hour = floor(24*ranuni(4445));
min = floor(50*ranuni(1234));
date = mdy(month,day,2015);
admitdate=dhms(date,hour,min,0);
/* random duration of stay*/
duration = 60 + floor(3000*ranuni(7777));
disdate = intnx('minute',admitdate,duration);
output;
end;
end;
run;
data occupancy;
set have;
format admitdate disdate datetime20.;
Do Occupanthour = (dhms(datepart(admitdate),hour(admitdate),0,0)) to
dhms(datepart(disdate),hour(disdate),0,0) by 3600;
HourOfDay = hour(OccupantHour);
DayOfWeek = Weekday(datepart(OccupantHour));
output;
end;
format OccupantHour datetime20.;
run;
Proc freq data=occupancy;
Tables HourOfDay;
run;
proc tabulate data=occupancy;
class DayOfWeek;
class HourOfDay;
tables HourOfDay,
(DayOfWeek All)*n;
run;