SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

楼主: shiyiming
打印 上一主题 下一主题

请教问题: SAS 编程

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
11#
 楼主| 发表于 2011-3-7 14:52:49 | 只看该作者

Re: 请教问题: SAS 编程

感觉就是sql的自连,然后数一下不同药的个数,限制一下30天的移动窗口......
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
12#
 楼主| 发表于 2011-3-10 15:44:41 | 只看该作者

Re: 请教问题: SAS 编程

既然是你困扰很长时间的问题,大家回答你问题,你理所当然要客气些,而且,起码要有反馈的信息和效率信息。

[code:3ugybnoj]data raw(keep=coun);
attrib id1 format=best8. date1 format=date. drug1 format=$1.;
retain id1;
retain date1;
retain drug1;
retain count;
input #1 id date $10. drug $1. ;
input #2 id2 date2 $10. drug2 $1. ;
date=input(catt(substr(date,8,2), substr(date,5,3),substr(date,1,4)), date12.);
date2=input(catt(substr(date2,8,2), substr(date2,5,3),substr(date2,1,4)), date12.);
if (id=id2 and drug^=drug2 and date2<date+30) then do;if count^=id then coun+1;count=id;end;
if id1^=. and (id1=id and drug1^=drug and date<date1+30) then do;if count^=id then coun+1;count=id;end;
id1=id2;
date1=date2;
drug1=drug2;
cards;
1 2010jan01 a
1 2010jan04 a
1 2010jan16 a
1 2010feb04 b
1 2010feb17 a
1 2010mar08 c
2 2010feb10 c
2 2010feb14 c
2 2010mar03 b
2 2010mar04 c
3 2010jan16 a
3 2010jan18 a
3 2010mar04 c
;
run;
[/code:3ugybnoj]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
13#
 楼主| 发表于 2011-3-10 16:41:50 | 只看该作者

Re: 请教问题: SAS 编程

第一次看Super K写代码,大家快来围观啦 !  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
14#
 楼主| 发表于 2011-3-11 13:35:20 | 只看该作者

Re: 请教问题: SAS 编程

我是属于那种问问题,然后问题大部分很难得到满意答案那种~~~
只是偶尔想挑战下。
上面的代码,因为把重点放在了infile和input,则不用建立中间数据集,30万记录0.28秒就够了。 <!-- s:mrgreen: --><img src="{SMILIES_PATH}/icon_mrgreen.gif" alt=":mrgreen:" title="Mr. Green" /><!-- s:mrgreen: -->
不过问问题的问完就走了,这相当让人不痛快。 <!-- s:evil: --><img src="{SMILIES_PATH}/icon_evil.gif" alt=":evil:" title="Evil or Very Mad" /><!-- s:evil: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
15#
 楼主| 发表于 2011-3-18 22:07:14 | 只看该作者

Re: 请教问题: SAS 编程

响应下,留个脚印。Super K是爱问问题的大牛,到哪个论坛都是的。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
16#
 楼主| 发表于 2011-3-18 22:22:01 | 只看该作者

Re: 请教问题: SAS 编程

跟这里和sasor以及sasl的大牛比,我可是小字辈的  <!-- s:wink: --><img src="{SMILIES_PATH}/icon_wink.gif" alt=":wink:" title="Wink" /><!-- s:wink: -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
17#
 楼主| 发表于 2011-3-18 22:31:43 | 只看该作者

Re: 请教问题: SAS 编程

SK就是大牛,比SK更强大的用2只手就能数的过来。 <!-- s:-D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":-D" title="Very Happy" /><!-- s:-D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
18#
 楼主| 发表于 2011-3-19 00:30:26 | 只看该作者

Re: 请教问题: SAS 编程

老施你这样抬举我,我以后在各位大侠面前就不好混了~ <!-- s:lol: --><img src="{SMILIES_PATH}/icon_lol.gif" alt=":lol:" title="Laughing" /><!-- s:lol: --> 而且特容易骄傲~
我还是虚心好好学习的好,况且本来自己有很多东西都不精通,还经常走冤枉路。 <!-- s:) --><img src="{SMILIES_PATH}/icon_smile.gif" alt=":)" title="Smile" /><!-- s:) -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
19#
 楼主| 发表于 2011-3-21 15:55:29 | 只看该作者

Re: 请教问题: SAS 编程

很久没来,顶下大牛啊,哈哈
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
20#
 楼主| 发表于 2011-5-30 01:28:52 | 只看该作者

Re: 请教问题: SAS 编程

data raw;
input id drug $ 13 date $ 3-11 ;
date=input(catt(substr(date,8,2), substr(date,5,3),substr(date,1,4)), date12.);
cards;
1 2010jan01 a
1 2010jan04 a
1 2010jan16 a
1 2010feb04 b
1 2010feb17 a
1 2010mar08 c
2 2010feb10 c
2 2010feb14 c
2 2010mar03 b
2 2010mar04 c
3 2010jan16 a
3 2010jan18 a
3 2010mar04 c
;
run;
proc sort data=raw;
by id drug date;
run;
data a;
do n=1 by 1 until (last.id);
do m=1 by 1 until (last.drug);
set raw end=eof;
by id drug notsorted;
if date-lag(date)&lt;=30 then x=1;
end;
end;
y+x;
x=0;
if eof then output;
run;
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-10 09:59 , Processed in 0.069757 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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