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