如何将一个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;
答案 0 :(得分:0)
你的前两行没有任何成就,也没用 - 删除它们。
if #available(iOS 11.0, *) {
UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}
您没有在IML语句中创建任何输出数据集,并且您实际上不应该多次重复使用相同的数据集名称(FA2)。这使得调试代码变得更加困难。请参阅下面的示例。
data fa2;
set fa2;
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;
结尾。
PROC UNIVARIATE正在引用没有U的FA2数据集,因为您没有将变量保存到数据集中,因此它不存在。所以它正确地生成错误。修复上述问题应解决此问题。