proc summary data=tem;
class x;
var r v;
ways 1;
output out=out(drop=_type_) sum=;
run;
proc print data=out;
run;作者: shiyiming 时间: 2004-7-22 09:36 标题: use sql data tem;
input x r v;
cards;
1 0.164609053 193128
1 0 6090
1 0.164338537 15220
-1 0 29856
-1 -0.082034454 163960
1 -0.082101806 56046
1 0.164338537 35945
-1 0 14616
-1 -0.410172272 191044
1 0.082372323 7904
1 -0.329218107 27274
1 0.330305533 98514
-1 -0.24691358 99294
-1 -0.082508251 38140
-1 -0.165152766 18756
;
proc sql;
select x, sum(r) as r, sum(v) as v
from tem
group by x;
quit;作者: shiyiming 时间: 2004-7-22 11:39 标题: 谢谢! 两位老大果然厉害~~先表示感谢!
可能是我的意思表述的不够清楚~~
其实我希望的不是将所有指示变量为1或-1的r,b 求和,最终只形成两行数据。二是这样:前三个连续为1的,求和形成一个观测;后面两个连续为-1的,求和形成第二个观测,再后面两个连续为-1的,求和形成打三个观测.....依次类推,将形成总共6个观测~~~~呵呵,明白我的意思了这次吧!作者: shiyiming 时间: 2004-7-22 13:09 标题: to lufenglangzi 两位老大回答你了,你应该可以顺着他们思路自己完成呀。
以后提问最好写清楚:
[quote:a8dbc][color=blue:a8dbc]原始格式[/color:a8dbc]:
......
[color=blue:a8dbc]目标格式[/color:a8dbc]:
......
[color=blue:a8dbc]转换逻辑[/color:a8dbc]:
......[/quote:a8dbc]作者: shiyiming 时间: 2004-7-22 16:21 标题: 好热呀 谢谢指点~~
我自己完成?可是我还是不会~~呵呵,他们写的虽然很简单了,但我都看不懂呢~不要笑我!我还是刚刚接触SAS.因为最近在做一个实证,暑假要发表文章,所以自己临时学来不及了!还望各位多多相助,小弟将存谢于心!作者: shiyiming 时间: 2004-7-22 18:54 标题: a 先前willon的一个帖子"用lag处理另一些数据"或许有些帮助。我找不到了作者: shiyiming 时间: 2004-7-22 20:06 标题: i 你不记得,我可记得,我的每一篇自己的帖子在自己的机器上都有备份:
类似于:
data tem;
input id code$ date yymmdd10.;
format date yymmdd10.;
cards;
1 A 2003-04-16
1 B 2003-04-29
2 A 2003-05-12
2 B 2003-06-01
2 C 2003-06-12
;run;
proc sort data=tem;by id descending date;run;
data tem;
set tem;
format lag_date yymmdd10.;
by id;
lag_date=lag(date);
if code='A' and lag(code)='B' then duration=lag_date-date;
drop lag_date;
run;