全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1127 0
2013-12-28
需要解决的问题:
原始数据sample:
ID  entryTime    drug1        time1             drug2      time2
1   13SEP2013    D1       14SEP2013        D2         14SEP2013
2   15OCT2012    T2       16OCT2013       D2          15SEP2013
问题:看看加入试验后(entryTime),多久第一次使用D开头药物(drug1,drug2)。
我用的方法是:

data sample;
set sample;
array drugType[2] drug;
array drugtime[2] time;
*定义新的使用药物时间;
array NewDrugTime[2] newTime1 newTime2;

*把使用了D开头药物的时间写入新的使用药物时间内;
do i=1 to dim(drugType);
if drugType{i} ne "T2" then do;
NewDrugTime{i}=drugTime{i};
return;
end;
end;
run;

data sample ;
set sample;
array NewDrugTime[2] newTime1 newTime2;
*找到最早使用D开头药物的时间,并和进入试验时间相减,得到进入试验后多久第一次使用D开头药物;
minDate=min(of NewDrugTime[*]);/*找最早使用D药物的时间*/
if minDate>=entryTime then do;
FirstDrugD=minDate-entryTime;
end;
run;

以上的code虽然可以达到目的,但感觉太累赘。我尝试把两段code合并在一个data step工作,但发现minDate跑出来的是空值,我怀疑是在第一个data里使用minDate=min(of NewDrugTime[*])时,NewDrugTime还没有写入值。
不知道有没有更好的办法优化下这段代码。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群