楼主: glovea
8760 8

SAS拆分数据集 [推广有奖]

  • 0关注
  • 0粉丝

本科生

94%

还不是VIP/贵宾

-

威望
0
论坛币
158 个
通用积分
0
学术水平
0 点
热心指数
2 点
信用等级
0 点
经验
6068 点
帖子
53
精华
0
在线时间
162 小时
注册时间
2014-4-22
最后登录
2019-8-26

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_
关键词:数据集 Excel格式 sas数据集 EXCEL 自动生成

回帖推荐

prince315 发表于9楼  查看完整内容

沙发
lyfyb99 在职认证  发表于 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);

使用道具

藤椅
graceyudy 发表于 2016-4-19 15:57:21 |只看作者 |坛友微信交流群
我用取余函数拆分。
mod=mod(_N_, Y)
然后用根据mod不同值,把对应的observation output到不同的dataset里。

使用道具

板凳
glovea 发表于 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的值,然后根据要求输出多个数据集,要求是不是有点高?

使用道具

报纸
graceyudy 发表于 2016-4-20 08:03:53 |只看作者 |坛友微信交流群
glovea 发表于 2016-4-19 16:18
嗯,是一个办法,不过我想能不能根据X和Y的值不同,SAS能自动动态生成多个数据集?我的想法是可不可以写一 ...
要求不高呀,用macro就可以啦,或者自己写个function

使用道具

地板
guanglei 发表于 2016-4-20 08:51:12 |只看作者 |坛友微信交流群
设定条件,output到不同的数据集中去

使用道具

7
lyfyb99 在职认证  发表于 2016-4-23 23:50:15 |只看作者 |坛友微信交流群
例如: 把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);

使用道具

8
glovea 发表于 2016-4-25 08:16:32 |只看作者 |坛友微信交流群
lyfyb99 发表于 2016-4-23 23:50
例如: 把sashelp.class 根据提前设定的k拆为若干个数据集test1, test2,  test3...,每个数据集有k条记录, ...
先给分,谢谢细心回答。

使用道具

9
prince315 在职认证  发表于 2016-4-25 16:38:08 |只看作者 |坛友微信交流群
Split文件宏

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 19:14