全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
9565 8
2016-04-19
悬赏 10 个论坛币 已解决
我现在有一个SAS数据集,数据集里有X条数据;
我想让SAS把数据集X自动分成多个数据集,每个数据集里有y条数据,SAS如何自动实现(SAS可以按照X/Y自动生成多个数据集)?
生成的多个数据集可否自动导出成EXCEL格式?
谢谢各位啦!

最佳答案

lyfyb99 查看完整内容

例如: 把sashelp.class 根据提前设定的k拆为若干个数据集test1, test2, test3...,每个数据集有k条记录,余数保留在test数据集中 %macro split(k=); data test; set sashelp.class end=eof nobs=count; if eof then call symput('nobs', left(count)); run; %let n=%sysfunc(int(%eval(&nobs/&k))); %put &nobs &n; %do i=1 %to &n; data test&i test; set test; if _N_
二维码

扫码加我 拉你入群

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

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

全部回复
2016-4-19 15:14:19

例如: 把sashelp.class 根据提前设定的k拆为若干个数据集test1, test2,  test3...,每个数据集有k条记录,余数保留在test数据集中

%macro split(k=);

data test;
set sashelp.class end=eof nobs=count;
if eof then call symput('nobs', left(count));
run;

%let n=%sysfunc(int(%eval(&nobs/&k)));

%put &nobs &n;

%do i=1 %to &n;
data test&i test;
set test;
if _N_<=&k then output test&i;
else output test;
run;
%end;

%mend;

%split(k=3);
二维码

扫码加我 拉你入群

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

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

2016-4-19 15:57:21
我用取余函数拆分。
mod=mod(_N_, Y)
然后用根据mod不同值,把对应的observation output到不同的dataset里。
二维码

扫码加我 拉你入群

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

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

2016-4-19 16:18:15
graceyudy 发表于 2016-4-19 15:57
我用取余函数拆分。
mod=mod(_N_, Y)
然后用根据mod不同值,把对应的observation output到不同的dataset里 ...
嗯,是一个办法,不过我想能不能根据X和Y的值不同,SAS能自动动态生成多个数据集?我的想法是可不可以写一段代码,任意行数据集放进去,让SAS自己判断X/Y的值,然后根据要求输出多个数据集,要求是不是有点高?
二维码

扫码加我 拉你入群

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

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

2016-4-20 08:03:53
glovea 发表于 2016-4-19 16:18
嗯,是一个办法,不过我想能不能根据X和Y的值不同,SAS能自动动态生成多个数据集?我的想法是可不可以写一 ...
要求不高呀,用macro就可以啦,或者自己写个function
二维码

扫码加我 拉你入群

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

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

2016-4-20 08:51:12
设定条件,output到不同的数据集中去
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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