作者c21221203 (kkii)
看板Statistics
标题[程式] SAS资料筛选
时间Thu May 19 13:59:47 2011
[软体程式类别]:
sas
[程式问题]:
挑选资料
[软体熟悉度]:
低(1~3个月)
[问题叙述]:
小弟想写一个追前高资料以及追前低资料的巨集,下面的范例是可以跑的
但是当我把SETTLED<=0改成>=0
if flag < settle_price 改成 if flag> settle price後,
flag这个变数下都找不到资料,请问是哪里出错。
追高可以成功但是追低就无法成功
[程式范例]:
%macro picklow_year(startyear); /*只保留下有过前低的日期资料*/
DATA picklowyear&startyear;
SET cutyear&startyear;
LAG_SETTLE1=LAG0(SETTLE_PRICE);
LAG_SETTLE2=LAG2(LAG_SETTLE1);
SETTLED=LAG_SETTLE1-LAG_SETTLE2;
IF SETTLED <=0 and settled ne '.' THEN DELETE;
retain flag ;
if flag < SETTLE_PRICE then flag = SETTLE_PRICE ;
PROC SORT ;
BY DATE FLAG CP_FLAG DATE ;
PROC SORT NODUPKEY ;
BY FLAG CP_FLAG;
RUN;
%mend;
%picklow_year(2007)
%picklow_year(2008)
%picklow_year(2009)
-----------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.120.80.19
1F:推 MmmRrrrX:巨集的问题我会建议把巨集里的程式另外复制出来,挑某一 05/19 15:58
2F:→ MmmRrrrX:年(如2007)取代&startyear,看log视窗的错误讯息是什麽 05/19 15:59
3F:推 west1996:主要的原因是你的flag初始值是null,然後settle_price恒 05/19 17:10
4F:→ west1996:正(我猜),所以if flag<settle_price这一个条件永远不会 05/19 17:11
5F:→ west1996:过,所以抓不到资料。btw,感觉语法逻辑怪怪的......... 05/19 17:12
6F:→ west1996:(打错 应该是if flag>settle_price这个条件) 05/19 17:12
7F:推 tew:你使用lag function 就要注意排序问题 05/19 19:17