楼主: suzhzh
3517 5

[问答] 如何得到正确的Dropout值? [推广有奖]

学科带头人

53%

还不是VIP/贵宾

-

威望
0
论坛币
14505 个
通用积分
756.9486
学术水平
70 点
热心指数
87 点
信用等级
52 点
经验
30444 点
帖子
3232
精华
0
在线时间
1281 小时
注册时间
2009-9-18
最后登录
2024-2-27

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现有产生数据的代码如下,需要求出一个变量,如droptime,问最后一次p*的*如何求出。比如,subject id=1是,其最后一个非缺失值变量是P8,那么赋值8给droptime,即droptime=8;
subject id=11,最后一个非缺失值变量是P3, 就有droptime=3,对于最后一个非缺失值是P10的,定义droptime=10.请问如何实现?
我有个例子,但是不正确,请高手帮我改一下。

data Tumor;
   infile datalines missover;
   input ID Time Dead Dose P1-P15;
   label ID='Subject ID';
   datalines;
1 47 1  1.0  0  5  6  8 10 10 10 10
2 71 1  1.0  0  0  0  0  0  0  0  0  1  1  1  1 1 1 1
3 81 0  1.0  0  1  1  1  1  1  1  1  1  1  1  1 1 1 1
4 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
5 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
6 65 1  1.0  0  0  0  1  1  1  1  1  1  1  1  1 1
7 71 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
8 69 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0
9 67 1  1.0  0  0  1  1  2  2  2  2  3  3  3  3 3 3
10 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
11 37 1  1.0  9  9  9
12 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
13 77 0  1.0  0  0  0  0  1  1  1  1  1  1  1  1 1 1 1
14 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
15 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
16 54 0  2.5  0  1  1  1  2  2  2  2  2  2  2  2
17 53 0  2.5  0  0  0  0  0  0  0  0  0  0  0  0
18 38 0  2.5  5 13 14
19 54 0  2.5  2  6  6  6  6  6  6  6  6  6  6  6
20 51 1  2.5 15 15 15 16 16 17 17 17 17 17 17
21 47 1  2.5 13 20 20 20 20 20 20 20
22 27 1  2.5 22
23 41 1  2.5  6 13 13 13
24 49 1  2.5  0  3  3  3  3  3  3  3  3
25 53 0  2.5  0  0  1  1  1  1  1  1  1  1  1  1
26 50 1  2.5  0  0  2  3  4  6  6  6  6  6
27 37 1  2.5  3 15 15
28 49 1  2.5  2  3  3  3  3  4  4  4  4
29 46 1  2.5  4  6  7  9  9  9  9
30 48 0  2.5 15 26 26 26 26 26 26 26
31 54 0 10.0 12 14 15 15 15 15 15 15 15 15 15 15
32 37 1 10.0 12 16 17
33 53 1 10.0  3  6  6  6  6  6  6  6  6  6  6  6
34 45 1 10.0  4 12 15 20 20 20
35 53 0 10.0  6 10 13 13 13 15 15 15 15 15 15 20
36 49 1 10.0  0  2  2  2  2  2  2  2  2
37 39 0 10.0  7  8  8
38 27 1 10.0 17
39 49 1 10.0  0  6  9 14 14 14 14 14 14
40 43 1 10.0 14 18 20 20 20
41 28 0 10.0  8
42 34 1 10.0 11 18
43 45 1 10.0 10 12 16 16 16 16
44 37 1 10.0  0  1  1
45 43 1 10.0  9 19 19 19 19
;
run;


data tumor_;
        set tumor;
        drop p11-p15;
run;
/***Example*****/
data tumor1;
        set tumor_;
        ARRAY p[10];
        do droptime=1 to DIM(p);
                if MISSING (p[droptime]) then leave;
                       
                droptime=droptime+1;
               
        end;

run;
二维码

扫码加我 拉你入群

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

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

关键词:drop Out Pou missover Subject 如何

沙发
mingfeng07 学生认证  发表于 2014-4-18 20:47:42 |只看作者 |坛友微信交流群
  1. data Tumor;
  2.    infile datalines missover;
  3.    input ID Time Dead Dose P1-P15;
  4.    label ID='Subject ID';
  5.    datalines;
  6. 1 47 1  1.0  0  5  6  8 10 10 10 10
  7. 2 71 1  1.0  0  0  0  0  0  0  0  0  1  1  1  1 1 1 1
  8. 3 81 0  1.0  0  1  1  1  1  1  1  1  1  1  1  1 1 1 1
  9. 4 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  10. 5 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  11. 6 65 1  1.0  0  0  0  1  1  1  1  1  1  1  1  1 1
  12. 7 71 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  13. 8 69 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0
  14. 9 67 1  1.0  0  0  1  1  2  2  2  2  3  3  3  3 3 3
  15. 10 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  16. 11 37 1  1.0  9  9  9
  17. 12 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  18. 13 77 0  1.0  0  0  0  0  1  1  1  1  1  1  1  1 1 1 1
  19. 14 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  20. 15 81 0  1.0  0  0  0  0  0  0  0  0  0  0  0  0 0 0 0
  21. 16 54 0  2.5  0  1  1  1  2  2  2  2  2  2  2  2
  22. 17 53 0  2.5  0  0  0  0  0  0  0  0  0  0  0  0
  23. 18 38 0  2.5  5 13 14
  24. 19 54 0  2.5  2  6  6  6  6  6  6  6  6  6  6  6
  25. 20 51 1  2.5 15 15 15 16 16 17 17 17 17 17 17
  26. 21 47 1  2.5 13 20 20 20 20 20 20 20
  27. 22 27 1  2.5 22
  28. 23 41 1  2.5  6 13 13 13
  29. 24 49 1  2.5  0  3  3  3  3  3  3  3  3
  30. 25 53 0  2.5  0  0  1  1  1  1  1  1  1  1  1  1
  31. 26 50 1  2.5  0  0  2  3  4  6  6  6  6  6
  32. 27 37 1  2.5  3 15 15
  33. 28 49 1  2.5  2  3  3  3  3  4  4  4  4
  34. 29 46 1  2.5  4  6  7  9  9  9  9
  35. 30 48 0  2.5 15 26 26 26 26 26 26 26
  36. 31 54 0 10.0 12 14 15 15 15 15 15 15 15 15 15 15
  37. 32 37 1 10.0 12 16 17
  38. 33 53 1 10.0  3  6  6  6  6  6  6  6  6  6  6  6
  39. 34 45 1 10.0  4 12 15 20 20 20
  40. 35 53 0 10.0  6 10 13 13 13 15 15 15 15 15 15 20
  41. 36 49 1 10.0  0  2  2  2  2  2  2  2  2
  42. 37 39 0 10.0  7  8  8
  43. 38 27 1 10.0 17
  44. 39 49 1 10.0  0  6  9 14 14 14 14 14 14
  45. 40 43 1 10.0 14 18 20 20 20
  46. 41 28 0 10.0  8
  47. 42 34 1 10.0 11 18
  48. 43 45 1 10.0 10 12 16 16 16 16
  49. 44 37 1 10.0  0  1  1
  50. 45 43 1 10.0  9 19 19 19 19
  51. ;
  52. run;
  53. data wanted(drop=i);
  54. set Tumor;
  55. array array{*} p1-p15;
  56. droptime=0;
  57. do i=1 to dim(array);
  58. if missing(array{i}) then do;
  59. droptime+1;
  60. end;
  61. end;
  62. if i=dim(array)+1 then do;
  63. droptime=dim(array)-droptime;
  64. output;
  65. end;
  66. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
suzhzh + 4 + 3 + 1 热心帮助其他会员

总评分: 学术水平 + 4  热心指数 + 3  信用等级 + 1   查看全部评分

欢迎扫一扫我头像关注, 不定期分享SAS技术知识。

使用道具

藤椅
yongyitian 发表于 2014-4-18 21:09:52 |只看作者 |坛友微信交流群
  1. data tumor1;
  2.         set tumor_;    * or set tumor;
  3.         ARRAY p[10];
  4.         do droptime=1 to DIM(p);
  5.          if MISSING (p[droptime]) then leave;
  6.                   
  7.          *       droptime=droptime+1;
  8.                
  9.         end;
  10.         droptime = droptime-1;  
  11. run;
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
suzhzh + 4 + 3 + 1 热心帮助其他会员

总评分: 学术水平 + 4  热心指数 + 3  信用等级 + 1   查看全部评分

使用道具

板凳
suzhzh 发表于 2014-4-18 22:47:17 |只看作者 |坛友微信交流群
Wanted
如何产生上图?用一下代码好像产生不了。
/*Re-arrange the data so that we can plot the triangle plot */
data tumor1;
        set tumor_;
        ARRAY p[10];
        do droptime=1 to DIM(p);
                if MISSING (p[droptime]) then LEAVE;
        end;
        droptime=droptime-1;
        do MeasureTime=1 to dim(p);
                Npap=p[MeasureTime];
                output;
        end;
        keep ID MeasureTime Npap droptime;
run;

PROC MEANS data=tumor1 nway NOPRINT;
        CLASS droptime MeasureTime;
        VAR Npap;
        OUTPUT OUT=meanout mean=mean_Npap;
run;

/*how should change thses code to ensure with the dataset meanout, I can produce a sample graph?*/
proc template;
  define statgraph scatterplot;
    dynamic _X_ _Y_ _VMCG_ _MSIZE_ _LMCG_;

          begingraph;
            entrytitle "Figure 1:";
                layout overlay;
                  scatterplot x=_X_ y=_Y_ /name='sca' markercolorgradient=_VMCG_ markerattrs=(symbol=squarefilled size=_MSIZE_);
                  *discretelegend 'sca';
                  continuouslegend 'sca'/orient=vertical halign=right title=_LMCG_;
                endlayout;
        endgraph;
  end;
run;

ods graphics on/width=1000 height=1000;
proc sgrender data=meanout template=scatterplot;
    dynamic _X_='MeasureTime' _Y_='DropTime' _VCMG_='mean_Npap' _MSIZE_='30pt' _LMCG_='Npap';
        label MeasureTime="Measurment Time" DropTime="Dropout Time";
run;

使用道具

报纸
suzhzh 发表于 2014-4-19 07:50:16 |只看作者 |坛友微信交流群
请帮帮我。

使用道具

地板
suzhzh 发表于 2014-4-19 16:47:23 |只看作者 |坛友微信交流群
suzhzh 发表于 2014-4-18 22:47
如何产生上图?用一下代码好像产生不了。
/*Re-arrange the data so that we can plot the triangle plo ...
正确的如下:
proc template;
  define statgraph scatterplot;
    dynamic _X_ _Y_  _MSIZE_ _LMCG_;

   begingraph;
     entrytitle "Figure 1:Trianlge Plot about (non)informative dropout";/*Plot the title*/
  layout overlay;
    scatterplot x=_X_ y=_Y_ /name='sca' markercolorgradient=mean_Npap markerattrs=(symbol=squarefilled size=_MSIZE_);
    *discretelegend 'sca';
    continuouslegend 'sca'/orient=vertical halign=right title=_LMCG_;
  endlayout;
endgraph;
  end;
run;

ods graphics on/width=1000 height=1000;
proc sgrender data=meanout(where=(mean_npap ne .))  template=scatterplot;
    dynamic _X_='MeasureTime' _Y_='DropTime'  _MSIZE_='30pt' _LMCG_='Npap';
label MeasureTime="Measurment Time" DropTime="Dropout Time" ;
run;
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
yongyitian + 1 + 1 + 1 感谢分享

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 03:45