【发布时间】:2017-12-01 15:32:08
【问题描述】:
我面临的问题是我有 262 只股票的样本。现在我必须对这些股票配对的每种可能组合进行计算。 我正在考虑采取两个循环。但是按照我的编码方式,我什至没有在日志窗口中得到任何输出或错误通知。 首先,我使用 proc sql 将所有股票代码放入一个宏变量中。
proc sql noprint;
select distinct name
into :ticker separated by " "
from stocks;
quit;
%macro close2;
%let n=262; /*262 stocks*/
%do i=1 %to &n.-1;
%do j=i-1 %to &n.;
%let s1=%trim(%scan(&ticker.,&i.," "));
%let s2=%trim(%scan(&ticker.,&j.," "));
data close;
set normp;
closeness=(&s1.-&s2.)**2;
run;
proc means data=close noprint;
var closeness;
output out=close1 (drop=_type_ _freq_)
sum(closeness)=closen;
run;quit;
data=close1;
set close1;
&s1.%s2.=closen;
run;
%end;
%end;
%mend close2;
最后,我希望用我计算出来的两只股票的两个股票代码来命名 var "closeness" 的所有不同总和。
【问题讨论】:
-
你有 PROC IML 吗?
-
一个数据集中有262个变量,有多少行?
-
这个计算我需要 250 行
-
是的,我想我有 proc iml