想完成如下问题
将序列s按照num拆分为4列,注意每列名字要按照num改变。
如图,而且希望拆分为4列后,再用另一种算法拼接回原来的1列。
这个算法的本意是先把序列拆分,然后求协方差矩阵,最后将协方差矩阵拼接回1列来统计相关系数的分布情况。
目前我自己是写了一个宏,先把数据集拆分为4个数据集,然后在merge在一起,反之亦然。但这种拆分方法面对大量数据时效率实在太低,比如长为1000*200的一串拆分为1000个长为200的串,需要2分钟。
我想问问sas有没有更快捷的拆分拼接方法,觉得悬赏分不够的话可以再加。
另附我目前再用的自编低效程序:
%macro cross1(set1,var,num,s,e,set2);
data temp&s.;
set &set1.;
if &num.=&s.;
s&s.=&var.;
keep trddt s&s.;
run;
%do i=(&s.+1) %to &e.;
data temp&i.;
set &set1.;
if &num.=&i.;
s&i.=&var.;
keep trddt s&i.;
run;
data temp&s.;
merge temp&s. temp&i.;
by trddt;
run;
%end;
data &set2.;
set temp&s.;
drop trddt;
run;
%mend cross1;