楼主: baoaibaobao
2842 5

[原创博文] 这段代码怎么转换成宏程序? [推广有奖]

  • 0关注
  • 25粉丝

已卖:106份资源

副教授

39%

还不是VIP/贵宾

-

威望
0
论坛币
9621 个
通用积分
13.9002
学术水平
80 点
热心指数
128 点
信用等级
38 点
经验
12060 点
帖子
548
精华
0
在线时间
1015 小时
注册时间
2009-5-21
最后登录
2025-12-31

楼主
baoaibaobao 发表于 2010-11-23 09:06:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
random数据理想的情况是在每个cen下,durg大的观测所对应的date也应该较大,date是日期型变量。这段代码目的是要找出不符合这种情况的观测。
data random;
set random(where=(cen=1));
dif_drug=dif(drug);
dif_date=dif(date);
keep cen drug date dif_drug dif_date;
if dif_drug=. then delete;
if dif_date=. then delete;  
if dif_date<0 then output;
run;
这是在cen为1的情况下,找出不符合理想情况的观测。
现在想将其转换为宏程序(循环),该怎么改呢?改了几个都运行不了
二维码

扫码加我 拉你入群

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

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

关键词:宏程序 random delete Where date where 程序

回帖推荐

baoaibaobao 发表于2楼  查看完整内容

自己写了一个,可以达到目的,但感觉还可以继续改进! 最后的打印结果: Obs cen drug date1 dif_drug date1 1 2 213 2009-07-24 97 -182 2 2 257 2009-08-21 37 -3 3 2 313 2009-08-14 49 -210 4 ...

本帖被以下文库推荐

沙发
baoaibaobao 发表于 2010-11-23 17:20:58
自己写了一个,可以达到目的,但感觉还可以继续改进!
  1. options mprint;
  2. %macro random(cn=,data=,cen=,drug=,date1=);
  3. %do _i=1 %to &cn.;
  4. data random&_i.;
  5. set &data.(where=(cen=&_i.));
  6. keep &cen. &drug. &date1.;run;
  7. proc sort data=random&_i.;by &drug.;run;
  8. data random&_i.;set random&_i.;
  9. dif_drug=dif(&drug.);
  10. dif_date1=dif(&date1.);
  11. keep &cen. &drug. &date1. dif_drug dif_date1 ;
  12. if dif_drug=. then delete;
  13. if dif_date1=. then delete;  
  14. if dif_date1<0 then output;run;
  15. data ran;set ran random&_i.;
  16. proc datasets;delete random&_i.;quit;
  17. proc print data=ran;run;
  18. %end;
  19. %mend;
  20. %random(cn=8,data=data2,cen=cen,drug=drug,date1=date1);
复制代码

最后的打印结果:
                  Obs    cen    drug         date1    dif_drug    date1
                       1     2      213    2009-07-24       97        -182
                       2     2      257    2009-08-21       37          -3
                       3     2      313    2009-08-14       49        -210
                       4     3      108    2010-04-13        1          -1
                       5     3      121    2009-08-05        1        -296
                       6     3      156    2010-04-26        1          -1
                       7     3      157    2010-03-04        1         -53
                       8     3      209    2010-03-16       29         -22
                       9     3      211    2010-03-23        1          -1
                      10     3      221    2009-08-07        9        -236
                      11     3      226    2009-11-24        1          -2
                      12     3      321    2009-08-19       89        -202
                      13     3      331    2009-11-16        1          -1
                      14     4      143    2010-03-29        1          -1
                      15     4      233    2009-08-12       89        -240
                      16     4      333    2009-10-13       89        -168
                      17     5      245    2009-09-21       93        -218
                      18     5      345    2009-09-01       96        -149
                      19     7      161    2009-09-11       49         -77
                      20     7      165    2009-07-17        1         -70
                      21     7      265    2009-07-17       93         -28
                      22     7      365    2009-07-17        1         -70
                      23     8      309    2009-11-03       29        -177
                      24     8      373    2009-09-04       13        -227
已有 1 人评分热心指数 收起 理由
crackman + 2 热心解答

总评分: 热心指数 + 2   查看全部评分

藤椅
soporaeternus 发表于 2010-11-23 17:34:12
这个东西直接排序能不能做啊?
Let them be hard, but never unjust

板凳
jingju11 发表于 2010-11-24 12:24:40
1# baoaibaobao

没有完全理解你要做什么?好像类似于disaccordant pairs一类的东西。大的drug对应大的date?很费解。而且感觉那个benchmark,基准,不很重要吗?我个人认为你还得在琢磨琢磨。京剧

报纸
baoaibaobao 发表于 2010-11-24 12:47:49
4# jingju11 可能我没有表述明白,是这样的。每个cen是独立的,并且对应一段drug,例如,cen=1时,drug是从1 到10,而cen=2时,drug是从11到20,以此类推。。。。。。
cen     drug       date1
1            1         1960-01-01
1            2         1960-01-02
....................................
10          90       1999-01-01
10          91       1999-02-01
.....................................
date1是日期型,理想状况就是在一个cen内,drug大的观测所对应的日期要靠后(较大),目的是要找出不符合理想状况的观测。

地板
jingju11 发表于 2010-11-24 12:51:26
sort by drug.
第一行就是基准。如果第一个日期和的drug对应有问题,那以后不就错了吗?

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

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