全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2225 7
2015-02-10
悬赏 15 个论坛币 已解决
想完成如下问题
将序列s按照num拆分为4列,注意每列名字要按照num改变。
如图,而且希望拆分为4列后,再用另一种算法拼接回原来的1列。
捕获.PNG

这个算法的本意是先把序列拆分,然后求协方差矩阵,最后将协方差矩阵拼接回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;

二维码

扫码加我 拉你入群

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

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

全部回复
2015-2-10 17:17:25
aleiiy 发表于 2015-2-11 09:18
没错,是应该再转置一次,完美地解决了本问题的前半部分。
请问从这个N串的阵列,如何再变回原来的一串的 ...
复制代码
二维码

扫码加我 拉你入群

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

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

2015-2-10 22:06:49
复制代码
二维码

扫码加我 拉你入群

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

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

2015-2-10 22:25:29
mingfeng07 发表于 2015-2-10 22:06
没写完哈
复制代码
二维码

扫码加我 拉你入群

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

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

2015-2-10 22:38:06
proc transpose data=a out=b (drop=_name_) prefix=s ;
var s;
by num;
run;
二维码

扫码加我 拉你入群

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

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

2015-2-10 22:44:44
sas9.4 发表于 2015-2-10 22:38
proc transpose data=a out=b (drop=_name_) prefix=s ;
var s;
by num;
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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