SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 901|回复: 2
打印 上一主题 下一主题

如何在data步中生成多个数据集,很多个

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2010-6-2 21:45:43 | 只看该作者

如何在data步中生成多个数据集,很多个

data basic1 basic2 basic3 basic4;
set basic;
if _n_<=4 then output basic1;
else if _n_<=8 then output basic2;
else if _n_<=12 then output basic3;
else output basic4;
run;

上面的是生成4个数据集合 我可以写成data basic1 basic2 basic3 basic4;,依次列出来
但是现在要是有100个,我应该怎么写呢?
试了一下写成 data basic1-basic4,结果报错
应该如何写呢??

另外如果有N个,N是一个参数,我该如何表示呢,
谢谢 求解答
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2010-6-3 09:35:02 | 只看该作者

Re: 如何在data步中生成多个数据集,很多个

%macro set;
%let n=100;
%do i =1 %to &n;
data basic&i;
        set sashelp.class;
if  4*(&i-1) lt _n_ le 4*(&i) then output basic&i;
run;
%end;
%mend;

%set;

应该可以实现。
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2010-6-3 20:54:16 | 只看该作者

Re: 如何在data步中生成多个数据集,很多个

深受楼上的启发。殊途同归
[code:jvr46qnd]%let n=100;
%macro set_;       
        data %do i =1 %to &n; basic%sysfunc(putn(&i, z3.)) %end;;
                set sashelp.class;
                if (_n_ le 4*1) then output basic001;
                %do i =2 %to &n;
                        else if  (_n_ le 4*(&i)) then output basic%sysfunc(putn(&i, z3.));
                %end;
        run;
%mend set_;

%set_
;[/code:jvr46qnd]
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-4 05:02 , Processed in 0.073314 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表