SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

12
返回列表 发新帖
楼主: shiyiming
打印 上一主题 下一主题

如何在队列内 为病例随机选对照???

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2009-2-20 09:23:29 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

不知道你们的版本怎么这么有意思,我的SAS8 SAS9结果都一样。
..............................
徐福贵说得对,这个问题难点不在于出来一组结果。难点在于结果的随机性。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2009-2-20 11:25:01 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

[quote=&quot;ahuige&quot;:nxbq5pmz]可能是男生寝室人气太旺。所以人数比女生寝室多。。。。。。。。。。。 <!-- s:( --><img src="{SMILIES_PATH}/icon_sad.gif" alt=":(" title="Sad" /><!-- s:( -->[/quote:nxbq5pmz]

我也是女生哦,美丽的一碗凉水
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2009-2-20 11:39:58 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

sxlion来报: <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->

sas6.12 的log:
NOTE: Appending WORK.CANDI to WORK.FINAL.
NOTE: 4 observations added.
NOTE: The data set WORK.FINAL has 1200 observations and 3 variables.

SAS9.1的log:
NOTE: 正在追加 WORK.CANDIDATE 至 WORK.FINAL。
NOTE: 从数据集 WORK.CANDIDATE 读取了 4 个观测。
NOTE: 添加了 4 个观测。
NOTE: 数据集 WORK.FINAL 有 1200 个观测和 3 个变量。


SAS9.2的log:
NOTE: Appending WORK.CANDIDATE to WORK.FINAL.
NOTE: There were 4 observations read from the data set WORK.CANDIDATE.
NOTE: 4 observations added.
NOTE: The data set WORK.FINAL has 1200 observations and 3 variables.

ps:“我也是女生哦,美丽的一碗凉水”,请帖照片证明这句话,谢谢!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
14#
 楼主| 发表于 2009-2-20 12:55:36 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

那看来是我的版本有问题,是8.2的
sas6.12 的log:
SAS9.1的log:
SAS9.2的log:
.

ps:“我也是女生哦,美丽的一碗凉水”,请帖照片证明这句话,谢谢!
pps:image……
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
15#
 楼主| 发表于 2009-4-17 19:53:54 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

在这个程序下,如果我想增加一个筛选条件,比如是month_collect,是不是就如我下面程序中加的if语句,就好了??
我运行后,选出的对照不是正正好,不晓得是符合条件的少?还是加的这句if有问题?
%macro getPeers(code,low,up,low2,up2);
   data candidate(keep=patientId code age ) noncancer(drop=patientid n);
     set noncancer;
     patientId=&amp;code;
     if &amp;low&lt;=age&lt;=&amp;up then
       do;
      [color=#FF0000:3hv881hu] if &amp;low2&lt;=month_collect&lt;=&amp;up2;[/color:3hv881hu]
       n+1;
       if n&lt;=4 then output candidate;
       else output noncancer;
       end;
     else output noncancer;
   run;

    proc datasets;
       append base=final
          data=candidate;
    run;
%mend;
option nomprint;

proc datasets lib=work;
  delete final;
run;

data _null_;
  set cancer;
  length cmd $200;
  cmd='%getpeers('||code||','||age-2||','||age+2||','[color=#FF0000:3hv881hu]||month_collect-1||','||month_collect+1||')';[/color:3hv881hu]
  call execute(cmd);
run
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
16#
 楼主| 发表于 2009-4-17 23:07:43 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

看在你这个小同志碰到新问题的情况下问得还比较清楚,引用也很到位。
我就救人救到底,送佛上西天了。。。。。。。。。。。

好久没看这个程序,都快看不懂了。。。。。。。。。。应该是红色的条件加的位置不对,应该和原来有的IF条件用AND放到一起,而不是加一个新的IF语句。这样逻辑空间的划分和你的意图就不一样了。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
17#
 楼主| 发表于 2009-4-18 17:39:31 | 只看该作者

Re: 如何在队列内 为病例随机选对照???

哦,if语句是这样用的啊,学习了。谢谢喔~~呵呵,又学到一个新知识,真开心。我自从开了这个贴开始学习sas后,现在进步很多了,同样进步的空间还异常的大。
[quote=&quot;ahuige&quot;:29orsozu]看在你这个小同志碰到新问题的情况下问得还比较清楚,引用也很到位。
我就救人救到底,送佛上西天了。。。。。。。。。。。

好久没看这个程序,都快看不懂了。。。。。。。。。。应该是红色的条件加的位置不对,应该和原来有的IF条件用AND放到一起,而不是加一个新的IF语句。这样逻辑空间的划分和你的意图就不一样了。[/quote:29orsozu]
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 14:06 , Processed in 0.079618 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表