j*****7 发帖数: 4348 | 1 现在有一组solid tumor的数据, 我们想要从unconfirmed的response数据情况里面推导
出confirmed的response.
如果我们有一个连续出现uPR的系列, 如数据中的Visit 2到Visit 4, 如果任意相邻两
个的Date的差别大于等于28天的话, 这一个系列的confirmed response就都算作PR; 其
它unconfirmed response结果(SD, PD)出现的话, confirmed response也维持SD, PD.
原始数据:
ID Visit Date Unconfirmed_response
1001 1 12JAN2009 SD
1001 2 13MAR2009 uPR
1001 3 28MAR2009 uPR
1001 4 02MAY2009 uPR
1001 5 31MAY2009 SD
1001 6 02AUG2009 uPR
1001 7 18AUG2009 uPR
1001 8 12SEP2009 SD
想得到的结果:
ID Visit Date Unconfirmed_response Confirmed_response
1001 1 12JAN2009 SD SD
1001 2 13MAR2009 uPR PR
1001 3 28MAR2009 uPR PR
1001 4 02MAY2009 uPR PR
1001 5 31MAY2009 SD SD
1001 6 02AUG2009 uPR uPR
1001 7 18AUG2009 uPR uPR
1001 8 12SEP2009 SD SD
问问大家有没有什么好方法,仅限SAS.
谢谢啦. | s******y 发帖数: 352 | 2 data have;
input ID :$8. Visit Date :date9.
Unconfirmed_response :$8.;
cards;
1001 1 12JAN2009 SD
1001 2 13MAR2009 uPR
1001 3 28MAR2009 uPR
1001 4 02MAY2009 uPR
1001 5 31MAY2009 SD
1001 6 02AUG2009 uPR
1001 7 18AUG2009 uPR
1001 8 12SEP2009 SD
;
run;
data have;
set have;
by ID Unconfirmed_response notsorted;
gp+1*first.Unconfirmed_response-gp*first.ID;
run;
proc sql;
create table want as
select *, case when max(date)-min(date)>28 then 'PR'
else Unconfirmed_response end as Confirmed_response
length=10
from have
group by id ,gp;
quit;
BAOZI please!!! the more the merrier.
【在 j*****7 的大作中提到】 : 现在有一组solid tumor的数据, 我们想要从unconfirmed的response数据情况里面推导 : 出confirmed的response. : 如果我们有一个连续出现uPR的系列, 如数据中的Visit 2到Visit 4, 如果任意相邻两 : 个的Date的差别大于等于28天的话, 这一个系列的confirmed response就都算作PR; 其 : 它unconfirmed response结果(SD, PD)出现的话, confirmed response也维持SD, PD. : 原始数据: : ID Visit Date Unconfirmed_response : 1001 1 12JAN2009 SD : 1001 2 13MAR2009 uPR : 1001 3 28MAR2009 uPR
| j*****7 发帖数: 4348 | 3 谢了, 明天到公司运行一下.
如果能work, 给你几十个包子那是不成问题的.
惭愧啊, 这行命令是干什么的都不知道.
gp+1*first.Unconfirmed_response-gp*first.ID;
【在 s******y 的大作中提到】 : data have; : input ID :$8. Visit Date :date9. : Unconfirmed_response :$8.; : cards; : 1001 1 12JAN2009 SD : 1001 2 13MAR2009 uPR : 1001 3 28MAR2009 uPR : 1001 4 02MAY2009 uPR : 1001 5 31MAY2009 SD : 1001 6 02AUG2009 uPR
| s******y 发帖数: 352 | 4 gp will increment by 1 when a new Unconfirmed_response is encountered.
gp will be reset to 1 when ID is changed.
if you need me to rewrite the code with ifelse statement, baozi please!
【在 j*****7 的大作中提到】 : 谢了, 明天到公司运行一下. : 如果能work, 给你几十个包子那是不成问题的. : 惭愧啊, 这行命令是干什么的都不知道. : gp+1*first.Unconfirmed_response-gp*first.ID;
| a****m 发帖数: 693 | 5 data have;
set have;
by ID Unconfirmed_response notsorted;
firstID=first.ID;
firstUn=first.unconfirmed_response;
gp+1*first.Unconfirmed_response-gp*first.ID;
run;
在sas上run一下,看看就明白了,如果对first and Last 熟悉了就知道了。
还要谢谢微笑刺客smileguy. | j*****7 发帖数: 4348 | 6 转帐完成
转给用户:smileguy,现金(伪币):500,收取手续费:5.00
包子奉上。
学习了不少, 这个unsorted从来没用到过, 这个max - min来的思路也很妙。
【在 s******y 的大作中提到】 : data have; : input ID :$8. Visit Date :date9. : Unconfirmed_response :$8.; : cards; : 1001 1 12JAN2009 SD : 1001 2 13MAR2009 uPR : 1001 3 28MAR2009 uPR : 1001 4 02MAY2009 uPR : 1001 5 31MAY2009 SD : 1001 6 02AUG2009 uPR
| s******y 发帖数: 352 | 7 man,从来没有过这么多包子。 以后我免费解答你的问题(如果我会的话)。多谢!!!
【在 j*****7 的大作中提到】 : 转帐完成 : 转给用户:smileguy,现金(伪币):500,收取手续费:5.00 : 包子奉上。 : 学习了不少, 这个unsorted从来没用到过, 这个max - min来的思路也很妙。
|
|