全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2525 2
2010-11-17
一个数据集,里面是一个行业的股票市值;行变量:股票ID;列变量:时间; 然后想股票每日的市值比重
下面是写的程序

data i1w(drop=i pre);                           /*   i1w 是weight of share in industry i 股票在行业的市值权重 */                                                           
  set temp1.mc01;                                                                                                                           
  array i1s{44} i1s1-i1s44;                           /* 数组i1s为股票变量 */                                                                  
  array i1w i1w1-i1w44;                         /* 数组 i1w为每只股票日权重 */                                                     
  do i=1 to 44;                                                                                                                        
     pre=Sum(i1s1-i1s44);                                                                                                                     
     if pre~=. then i1w(i)=i1s(i)/pre;      /* 非缺失值时,计算日收益率i1w  */                                                      
  end;                                                                                                                                 
run;               



但是:
SAS 提醒
NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.I1W 可能不完整。该步停止时,共有 0 个观测和 132 个变量。
WARNING: 数据集 WORK.I1W 由于该步已停止,而没有被替换。



哪位大侠帮忙看看

先谢过了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-11-17 21:53:26
首先你得确定你股票的变量名是i1s 还是ils  因为1和l在编辑器里是差不多的,我刚才在我电脑上跑了下,就是这个出错了,可能你也是这个原因;
然后注意你的sum(i1s1-i1s44)这个不是表示数列和,SAS认为中间的连字符是减号,所以这个的结果是i1s1i1s44 你可以再前面加一个of 即sum(of i1s1-i1s44)
希望对你有用
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-11-18 10:06:20
1# seelovesa

从错误的提示来看,可能
1. temp1.mc01 数据不存在。但是因为提示的生成的数据有132个变量,比44+44=88多,所以这个错误不可能。
2.两个array, i1s, i1w, 的定义名称可能和mc01的变量名恰巧重合,sas不允许此类命名规则因此导致错误。所以应该核实一下。

京剧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群