楼主: vitaminlee
1171 0

[问答] 使用数组计算加入试验第一次使用某种药物的时间 [推广有奖]

  • 0关注
  • 0粉丝

高中生

27%

还不是VIP/贵宾

-

威望
0
论坛币
1 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
262 点
帖子
22
精华
0
在线时间
19 小时
注册时间
2007-6-10
最后登录
2017-6-6

楼主
vitaminlee 发表于 2013-12-28 00:11:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
需要解决的问题:
原始数据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还没有写入值。
不知道有没有更好的办法优化下这段代码。
二维码

扫码加我 拉你入群

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

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

关键词:一次使用 Data step Sample RETURN ENTRY 如何

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-17 04:20