如何重用在其他过程中使用SAS输出

时间:2018-04-19 13:18:21

标签: sas export ods

如何将一个PROC的输出变量用于另一个PROC。 我是SAS的新手,并且花了很多时间试图在下面的程序中解决这个问题。

 DATA FA2;    
 SET FA2;    
 proc iml;    
 start main;    
 use FA2;    
 read all var {Close};    
 s = Close;    
 u = j(nrow(s)-1,1,0);    
 do i=2 to nrow(s);    
 u[i-1]=log(s[i]/s[i-1]);    
 end;    
 n=nrow(s)-1;    
 rsigma=sqrt(252/n*(u'*u));    
 mu = mean(u);    
 call qntl(q, u);    
 print q[rowname={"P05", "P95"}];    
 s = quartile(u);    
 PRINT mu, rsigma, s;    
 finish;    
 run;    
 PROC UNIVARIATE DATA = FA2;
 var u;
 run;


 ERROR    
 PROC UNIVARIATE DATA = FA2;    
 var u;    
 Variable U not found.    
 run;

1 个答案:

答案 0 :(得分:0)

  1. 你的前两行没有任何成就,也没用 - 删除它们。

    if #available(iOS 11.0, *) {
        UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
    }
    
  2. 您没有在IML语句中创建任何输出数据集,并且您实际上不应该多次重复使用相同的数据集名称(FA2)。这使得调试代码变得更加困难。请参阅下面的示例。

    data fa2;
    set fa2;
    
  3. IML在结尾处以 proc iml; /** create SAS data set from vectors **/ y = {1,0,3,2,0,3}; /** 6 x 1 vector **/ z = {8,7,6,5,6}; /** 5 x 1 vector **/ c = {A A A B B B}; /** 1 x 6 character vector **/ create MyData var {y z c}; /** create data set **/ append; /** write data in vectors **/ close MyData; /** close the data set **/ quit; 结尾。

  4. PROC UNIVARIATE正在引用没有U的FA2数据集,因为您没有将变量保存到数据集中,因此它不存在。所以它正确地生成错误。修复上述问题应解决此问题。