作者tew (咖啡王子)
站内Statistics
标题Re: [程式] SAS资料计算
时间Sat Jun 26 11:58:30 2010
以下我做了一个假设
有两个人 观察到4~5种情况
其中 第二种情况 会只出现一次
然後 在这样的情境下
不用刻意针对 出现 第三种 第四种的情况做处理
只要能让SAS辨认不同情况为何就可以了
不过你资料有几笔
只要都是按照ID 事发顺序排序
这个语法可以一步到位解决你所有的情况的计算
data a;
input date date10. response;
format date date10. ;
cards;
09AUG07 1
23AUG07 1
06SEP07 2
20SEP07 2
05OCT07 3
16OCT07 3
30OCT07 3
29NOV07 1
01JAN08 2
10JAN08 3
19JAN08 3
30JAN08 4
10JUN08 4
;
run;
data a;
set a;
retain n o 0;
if response^=1 then n=n+1;
else n=0;
if response^=lag(response) then o=o+1;
run;
data a1 ;
set a;
if response^=1 then output;
run;
proc means noprint data=a1;
var date;
by o ;
output out=a1 min=min max=max;
run;
data final;
merge a a1;by o;
days=max-min+1;
if min=max then days=.;
keep date response days;
run;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.37.242.130
1F:→ liton:n 和 o似乎留一个就可以了哩 06/27 15:07
2F:→ tew:对 那是我在撰写过程中 思考时多写的 变项n是多余的 06/27 15:23
3F:→ tew:不过 保留也无伤大雅 XDD 06/27 15:23
4F:→ liton:另外只有date9. 没有date10.咧 是我的版本问题? 06/27 16:07