首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按时差调整时差

按时差调整时差
EN

Stack Overflow用户
提问于 2020-08-03 09:52:42
回答 1查看 32关注 0票数 0

我有个编辑检查

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

这是我的密码。我这里有很多旗帜,我做错什么了?对于上下文,有一个prothour变量,即1,但实际的小时时间点是0.77。我应该以某种方式调整0.77来解释这一点吗?

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-03 11:12:30

您可以使用ROUND函数的第二个参数将其舍入到最近的倍数。

ROUND(argument

<,四舍五入单位>)

必需参数

参数

  • 是要舍入的数值常量、变量或表达式。

可选参数

四舍五入

  • 是一个正数常量、变量或表达式,指定舍入单元。

将时间值舍入最近的小时(时间为秒,小时为3600秒)

代码语言:javascript
复制
closest_hour = ROUND(mytime, 3600);

圆小时(数)至最近小时(时间值)

代码语言:javascript
复制
closest_hour = ROUND(myhour*3600, 3600);

当然,整小时(数)到最近的整小时(数)

代码语言:javascript
复制
closest_hr = ROUND(myhour);  * default rounding unit is 1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63227242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档