楼主: wubuyun2009
6221 2

[问答] 倾向评分匹配后的分组(用SAS软件) [推广有奖]

  • 1关注
  • 9粉丝

已卖:1001份资源

硕士生

80%

还不是VIP/贵宾

-

威望
0
论坛币
3045 个
通用积分
58.5125
学术水平
11 点
热心指数
12 点
信用等级
10 点
经验
2028 点
帖子
49
精华
1
在线时间
164 小时
注册时间
2011-5-19
最后登录
2025-12-28

楼主
wubuyun2009 发表于 2015-12-8 19:07:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位前辈,向大家请教一个问题:
我有1个数据集(data=moni),其结构见(表1)。按照国外的资料上做了倾向评分,匹配如下(见表2,data=matches).请问一下,我怎么在数据集(data=moni)中将id=treatment_IDN的编为group1=1,而id=control_IDN的编为group1=0,然后可以进行匹配后的两组比较。谢谢!
表1
Obs  name  id group age sex mlrhecg mhtime mhdiabete mhhtn survival _LEVEL_   ps_xb  ps_stdxb ps_pred  ranvar

   1   李**  1     1      58    1     0      3.3      1       1       1       1    -0.49374  0.28698 0.37901 0.09835
   2   王** 2     1      59    0     0      4.4      0       0       1       1    -0.75350  0.33800 0.32006 0.92755

   3   封**  3     1    60  1     1      2.5      1       1       0       1    -0.21633  0.26139 0.44613 0.08792
   4   戈**  4     1    61  0     0      4.2      1       1       1       1    -1.38400  0.28006 0.20037 0.30442
   5   夏**  5     1    62  1     0      2.2      0       0       1       1     0.28470  0.28509 0.57070 0.16866
   6   刘**  6     1    63  1     0      4.0      1       1       0       1    -1.47983  0.23964 0.18545 0.56443
   7   王**  7     1    64  1     1      3.9      0       0       1       1    -0.99309  0.24647 0.27030 0.79615
   8   毕**  8     1    65  0     0      3.1      1       0       0       1    -1.14021  0.17741 0.24228 0.19558
   9   王**  9     1    66  0     0      2.6      1       0       1       1    -0.93930  0.18011 0.28104 0.24675
  10  潘**   10   1    67  0     0      3.6      0       0       0       1    -1.13685  0.21293 0.24290 0.98991


表2

                                                        Treatment_    Control_
                                        Obs    match        IDN          IDN

                                          1       1         41           114
                                          2       2         24           255
                                          3       3         57           392
                                          4       4         30           470
                                          5       5         32           277
                                          6       6         15           313
                                          7       7          3           301
                                          8       8          1           298
                                          9       9         86           160
                                         10      10         25           227


二维码

扫码加我 拉你入群

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

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

关键词:sas软件 treatment Survival control Contro 软件

沙发
wubuyun2009 发表于 2015-12-8 21:23:32
最后用一个笨办法把问题解决了。在data=moni中新增一个观察项(treatment_idn)=id,与另一个数据集(data=matches)的treatment_idn一样,就合并成新数据集(data=monimatch1)。然后把新数据集中的match不等于.定义为治疗组中的匹配组(group1=1)。再把数据集(data=monimatch1)中control_idn相等于id,再和另一个数据集(data=matches)合并,取对照组中有匹配的值为group1=0.
这样匹配的两组就分开了,可以进行均值比较和其它检验了。
  1. data monimatch;                   /*通过两次merge语句,将完成匹配的治疗组命名为group1=1,完成匹配的对照组为group1=0*/
  2.         set moni;
  3.         treatment_idn=id;
  4. run;
  5. proc print data=monimatch;
  6. run;
  7. data monimatch1;         
  8.         merge monimatch matches; by  treatment_idn;
  9.         if match>0 then group1=1;
  10.         control_idn=id;
  11. run;
  12. proc sort data=matches;
  13.         by         control_idn;
  14. run;
  15. data monimatch2;
  16.         merge monimatch1 matches; by  control_idn;
  17.         if group=0 and match>0 then group1=0;
  18. run;
  19. proc print data=monimatch2;        /*匹配及分组完成*/
  20. run;
  21. proc means n mean std sum data=monimatch2;
  22.         class group1;
  23. run;
复制代码

藤椅
麦麦爱sas 发表于 2017-5-17 18:02:38
同学你好,能不能分享一下你匹配的程序啊谢谢

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

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