我有个编辑检查
“如果周期= 1,2,3或4和学习小时=1,那么时间应该是1小时加或减15分钟后的药物从同一时期”.These应用一个+/- 20分钟的学习时间窗口1.00 (相对于他们的投药时间),它是协议窗口,所以即使事件不是在1小时,我们在寻找偏离窗口从1小时,而不是事件的时间点。以下是合并的数据

这是我的密码。我这里有很多旗帜,我做错什么了?对于上下文,有一个prothour变量,即1,但实际的小时时间点是0.77。我应该以某种方式调整0.77来解释这一点吗?
data medfst;
set dm.ex;
ptno=strip(compress(clientid,'-'))+0;
if ex_stdat=. or ex_sttim=. then delete;
medday= day;
rename hour=medhour;
proc sort;
by ptno period day medhour;
run;
data medfst;
set medfst;
by ptno period;
if first.period;
ex_datetime1=put(ex_stdat,date9.-r)||' '||put(ex_sttim,time8.-l);
ex_datetime=input(ex_datetime1,datetime20.);
keep scrid clientid ptno period ex_datetime ex_stdat ex_sttim medhour day;
format ex_datetime datetime20.;
proc sort;
by ptno period day medhour;
run;
data vs;
set dm.vs;
ptno=strip(compress(clientid,'-'))+0;
if VS_TEST in ('SYSTOLIC');
if prothour in ('1');
proc sort nodupkey;
by ptno period day hour;
run;
data vs1;
set vs;
vs_datetime1=put(vs_dat,date9.-r)||' '||put(vs_tim,time8.-l);
vs_datetime=input(vs_datetime1,datetime20.);
keep scrid clientid day hour ptno period vs_dat vs_tim vs_datetime vs_com;
format vs_datetime datetime20.;
proc sort;
by ptno period day;
run;
data temp;
merge medfst (in=a) vs1;
by ptno period;
if a;
run;
data final_temp;
set temp;
newhour=hour-medhour;
datediff=vs_dat-ex_stdat;
timediff=vs_tim-ex_sttim;
diff=datediff*24*3600+timediff;
newdiff=round(diff-newhour*(60*60));
format diff time8. newdiff time8. timediff time8.;
run;
data final;
set final_temp;
%inc_subjs;
***** *****;
*********************************************************************************************************;
attrib extra reason length=$5000.;
*********************************************************************************************************;
* Edit check code and footnote *;
***** *****;
if abs(diff) lt '00:45:00't or abs(diff) gt '01:15:00't then do;
reason=trim(reason)||'If Period = 1,2,3 or 4 and Study Hour = 1 then the Time should be 1 hour plus or minus 15 minutes post dose of study drug from the same period#';
extra = trim(extra)||', Hour based on Dose = '||trim(left(medhour))||', Vital Signs hour = '||trim(left(prothour))||', Time deviated = '||trim(put(diff,time8.))||', comment = '||trim(left(vs_com));
end;发布于 2020-08-03 11:12:30
您可以使用ROUND函数的第二个参数将其舍入到最近的倍数。
ROUND(argument
<,四舍五入单位>)
必需参数
参数
可选参数
四舍五入
将时间值舍入最近的小时(时间为秒,小时为3600秒)
closest_hour = ROUND(mytime, 3600);圆小时(数)至最近小时(时间值)
closest_hour = ROUND(myhour*3600, 3600);当然,整小时(数)到最近的整小时(数)
closest_hr = ROUND(myhour); * default rounding unit is 1;https://stackoverflow.com/questions/63227242
复制相似问题