楼主: hurley18
1990 11

[SAS EM] 股票SAS里的SQL条件交叉判断 [推广有奖]

11
hurley18 发表于 2022-1-23 12:23:04
HXAI102230 发表于 2022-1-21 10:33
data rawsql_1 rawsql_2(keep=date nclose);
  set rawsql;
  by stockcode nw date;
大神,遇到一个数组问题
我要把每周生成前面10周的Qwopen(1-10)变量,共新增10个变量(第1周全空,第2周只有Qwopn1...)
我写了数组,显示数组下标越界。。。求教一下,感谢!
data QWM1;
set QWM1;
by stockcode nw;
array QWnopen(10) QWnopen1-QWnopen10;
do i=1 to 10;
if nw<i+1 then QWnopen(i)='.';
if nw>=i+1 then QWnopen(i)=lag(QWnopen(i-1));
end;
run;

日志显示:
NOTE: 字符值已转换为数值,位置:(行:列)。
      3074:16
ERROR: 数组下标越界,位置: 行 3075 列 32。
STOCKCODE=000001 STOCKNAME=平安银行 DATE=2021-01-08 wnopen=18.950974681 nw=155 FIRST.STOCKCODE=1 LAST.STOCKCODE=0
FIRST.nw=1 LAST.nw=1 QWnopen1=. QWnopen2=. QWnopen3=. QWnopen4=. QWnopen5=. QWnopen6=. QWnopen7=. QWnopen8=. QWnopen9=.
QWnopen10=. i=1 _ERROR_=1 _N_=1
array.xls (19.5 KB)

12
HXAI102230 在职认证  发表于 2022-1-23 21:09:21
data QWM1;
set rawarray;
by stockcode nw;
array QWnopen(10) QWnopen1-QWnopen10;
QWnopen1=lag(wnopen);
do i=2 to 10;
  QWnopen(i)=lag(QWnopen(i-1));
end;
do j=10 to 2 by -1;
  if j > num then QWnopen(j)=.;
end;
if first.stockcode then do;
  num=0;
  do i=1 to 10;
    QWnopen(i)=.;
        end;
end;
num+1;
drop i j;
run;


已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
pobel + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 18:02