楼主: congmu
3699 9

怎么纵向合并251个数据集? [推广有奖]

  • 2关注
  • 0粉丝

硕士生

42%

还不是VIP/贵宾

-

威望
0
论坛币
3918 个
通用积分
24.1704
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1689 点
帖子
95
精华
0
在线时间
210 小时
注册时间
2012-10-25
最后登录
2023-7-9

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我又251个数据集需要纵向合并,我会合并1个两个。。。直接用set就好。但是怎么合并251个。。。我总不能在set后面手动输入251个数据集把。。。。。
这251个数据集在逻辑库data中,数据集的名字我存在一个数据集name中的变量name中。
二维码

扫码加我 拉你入群

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

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

关键词:数据集 name Data Set 逻辑库

回帖推荐

Tigflanker 发表于10楼  查看完整内容

You can use CALL EXECUTE to make it easy.

intheangel 发表于2楼  查看完整内容

先把name全导出来变成宏文本,然后宏执行就好然后编个宏
沙发
intheangel 学生认证  发表于 2014-5-24 14:17:45 |只看作者 |坛友微信交流群
先把name全导出来变成宏文本,然后宏执行就好
  1. data name;
  2. set name;
  3. file "d:\macro.txt";
  4. put "%a(" name ");";
  5. run;
复制代码
然后编个宏
  1. data a;
  2. run;
  3. %macro a(name);
  4. data a;
  5. set a &name;
  6. %mend a;
  7. %a
复制代码
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

藤椅
intheangel 学生认证  发表于 2014-5-24 14:18:45 |只看作者 |坛友微信交流群
sorry, 不是执行宏%a, 把最后的%a 改成 %include "d:\macro.txt"; , 就是前面的宏文本
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

板凳
congmu 发表于 2014-5-24 14:54:44 |只看作者 |坛友微信交流群
intheangel 发表于 2014-5-24 14:18
sorry, 不是执行宏%a, 把最后的%a 改成 %include "d:\macro.txt"; , 就是前面的宏文本
谢谢,很想知道不用宏能不能做

使用道具

报纸
intheangel 学生认证  发表于 2014-5-24 15:02:33 |只看作者 |坛友微信交流群
congmu 发表于 2014-5-24 14:54
谢谢,很想知道不用宏能不能做
本来就是重复计算的东西,不用宏怎么做。。。?额~~不过可以简单点把所有的赋值给一个宏变量
  1. proc sql;
  2. select name
  3. into :index separated by ","  from name;
  4. quit;
  5. data a;
  6. set &index;
  7. run;
复制代码
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

地板
intheangel 学生认证  发表于 2014-5-24 15:03:04 |只看作者 |坛友微信交流群
congmu 发表于 2014-5-24 14:54
谢谢,很想知道不用宏能不能做
不知道对不对的,没调试,都是随手写的
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

使用道具

7
congmu 发表于 2014-5-24 15:06:47 |只看作者 |坛友微信交流群
intheangel 发表于 2014-5-24 15:03
不知道对不对的,没调试,都是随手写的
谢谢,我试试

使用道具

8
bobguy 发表于 2014-5-26 07:41:48 |只看作者 |坛友微信交流群
Use

proc datasets lib=work mt=data;
run;

This will list all data set names in log.
Then goto SAS log

use Alt+mouse high-light do a column select
then copy + paste.



proc datasets lib=work kill;
quit;

data t1 a2 tc3;
x=1;
run;

options ps=500;

proc datasets lib=work mt=data;
run;
quit;

data all;
set
A2
T1
TC3
;
run;

使用道具

9
akakak123 发表于 2014-5-27 11:19:26 |只看作者 |坛友微信交流群
  1. proc contents data=work._all_ out=all (keep = LIBNAME MEMNAME) noprint;
  2. run;

  3. data all2;
  4. set all;
  5. length _all $ 20000 ;
  6. by LIBNAME;
  7. retain _all_;
  8. if first.LIBNAME then _all=strip(MEMNAME);
  9. else _all=strip(_all)||' '||strip(MEMNAME);
  10. if last.LIBNAME then output;
  11. run;

  12. data _null_;
  13. set all2;
  14.   call execute ('data want;');
  15.   call execute ('set '||strip(_all)||';');
  16.   call execute ('run;');
  17. run;
复制代码

使用道具

10
Tigflanker 发表于 2014-5-27 17:03:56 |只看作者 |坛友微信交流群
You can use CALL EXECUTE to make it easy.

  1. data a;i=1;run;
  2. data b;i=2;run;
  3. data c;i=3;run;

  4. data name;
  5. input name $ @@;
  6. cards;
  7. a b c
  8. ;run;

  9. data _null_;
  10.   set name end = last;
  11.   if _n_ = 1 then call execute('data want;set');
  12.   call execute(name);
  13.   if last then call execute(';run;');
  14. run;
复制代码
Bye SAS.
若有缘,能重聚。

使用道具

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

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

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

GMT+8, 2024-4-28 02:25