SAS中文论坛

标题: 请教一个数据处理问题 [打印本页]

作者: shiyiming    时间: 2008-5-22 10:09
标题: 请教一个数据处理问题
现在有下面一个数据集
rq        cjsl        sysl        avginprice        outprice        zjfss        highprice        lowprice
19970129        2000         4000        8.00        0        -16307.3        8.15        8.03
19970129        2000        4000        5.03        0        -10067        5.05        4.91
19970129        1000        1000        5.18        0        -5778.31        5.8        5.55
19970130        0        2000        5.03        0        -10067        5.1        4.91
19970130        0        2000        8.15        0        -16307.3        8.16        8.06
19970131        0        1000        5.78        0        -5778.31        5.85        5.7
19970131        0        2000        8.15        0        -16307.3        8.3        8.12
19970131        -1000        1000        5.03        4.01        -10067        5.1        5
19970217        0        1000        5.78        0        -5778.31        5.99        5.74
19970217        4000        4000        9.44        0        -37767.88        9.48        8.95
现在想按照日期计算出一个新的指标pg ,
如果cjsl>0且avginprice < lowpriceprice 那么pg=1,统计每一天Pg的和,得到一个新的数据集
rq        pg
19970129        2
19970130        0
19970131        0
19970217        0
请问各位大大该怎么实现
作者: shiyiming    时间: 2008-5-22 19:27
标题: Re: 请教一个数据处理问题
[code:1ftb6zmm]data a;
        input rq cjsl sysl avginprice outprice zjfss highprice lowprice;
        datalines;
19970129 2000 4000 8.00 0 -16307.3 8.15 8.03
19970129 2000 4000 5.03 0 -10067 5.05 4.91
19970129 1000 1000 5.18 0 -5778.31 5.8 5.55
19970130 0 2000 5.03 0 -10067 5.1 4.91
19970130 0 2000 8.15 0 -16307.3 8.16 8.06
19970131 0 1000 5.78 0 -5778.31 5.85 5.7
19970131 0 2000 8.15 0 -16307.3 8.3 8.12
19970131 -1000 1000 5.03 4.01 -10067 5.1 5
19970217 0 1000 5.78 0 -5778.31 5.99 5.74
19970217 4000 4000 9.44 0 -37767.88 9.48 8.95
;
run;
proc sql;
        create table b as
                select rq,
                                sum(case
                                         when cjsl>0 and avginprice < lowprice then 1
                                         else 0
                                         end) as pg
                        from a
                        group by rq;
quit;[/code:1ftb6zmm]
作者: shiyiming    时间: 2008-5-22 20:04
标题: Re: 请教一个数据处理问题
你可以试试这个:虽然没得到你的答案,但是能反映出你的思路,或许对你有帮助。
[code:p1zlshga]
proc freq data=a noprint;
        tables rq /out=b(rename=(count=pq) drop=percent);
        where cjsl>0 and avginprice<lowprice;
run;
[/code:p1zlshga]
作者: shiyiming    时间: 2008-6-4 14:26
标题: Re: 请教一个数据处理问题
lwien001 给的是proc sql的方法,我试着写了个其它的方法
[code:3xbq8m08]data a;
input rq cjsl sysl avginprice outprice zjfss highprice lowprice;  
datalines;
19970129 2000 4000 8.00 0 -16307.3 8.15 8.03
19970129 2000 4000 5.03 0 -10067 5.05 4.91
19970129 1000 1000 5.18 0 -5778.31 5.8 5.55
19970130 0 2000 5.03 0 -10067 5.1 4.91
19970130 0 2000 8.15 0 -16307.3 8.16 8.06
19970131 0 1000 5.78 0 -5778.31 5.85 5.7
19970131 0 2000 8.15 0 -16307.3 8.3 8.12
19970131 -1000 1000 5.03 4.01 -10067 5.1 5
19970217 0 1000 5.78 0 -5778.31 5.99 5.74
19970217 4000 4000 9.44 0 -37767.88 9.48 8.95
;
run;

proc sort data=a;
        by rq;
run;
data b (keep= rq pg);
        set a;        
        if cjsl>0 and avginprice<lowprice then seq=1;       
        else seq=0;       
        retain pg 0;        
        if first.rq=1 then pg=seq;        
        else pg+seq;        
        by rq;        
        if last.rq;
run;
proc print;run;

[/code:3xbq8m08]




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2