楼主: spy1889
21288 21

[原创博文] 多个数据集合并的问题 [推广有奖]

11
spy1889 发表于 2012-9-20 19:33:08
nomad5 发表于 2012-9-20 17:45
data new;
set a:;
run;
谢谢!这个好像也不行。

12
spy1889 发表于 2012-9-20 19:33:42
nuomin 发表于 2012-9-20 17:57
将列名放到excel里一拉,要多少有多少。比较笨的方法,当然了 ,肯定会有软件提供的方法。
这是个好办法,谢谢!不过文件名有时候没有这么有规律~~

13
usm007 发表于 2012-9-20 21:52:58
写个宏读取数据名,然后用proc append过程循环地将数据集append就行了。

14
spy1889 发表于 2012-9-20 22:09:00
ziyenano 发表于 2012-9-20 19:31
写错了;
data new;
set a00001-a00200;
谢谢!确定这样可以?我试了还是不行哦

15
spy1889 发表于 2012-9-20 22:09:54
usm007 发表于 2012-9-20 21:52
写个宏读取数据名,然后用proc append过程循环地将数据集append就行了。
不知道咋写宏,能不能具体点?谢谢!

16
chenys625 发表于 2012-9-20 23:23:35
先做一个空的数据集new,保证跟a里面的变量格式一样,然后运行下面这段程序试试。可能有个别的语法错,稍微调一下。
%macro a;
%do i=1 to 200;
data new;
set new a0000&i;
run;
%end;
用宏循环应该可以解决你的问题,横向合并用merg基本一样。
%mend;

17
chenys625 发表于 2012-9-20 23:25:39
刚看到还有兄弟说用proc append 这个也行,把我程序宏里面的data步换调就行。数据量大的话有append。

18
ziyenano 发表于 2012-9-20 23:38:59
spy1889 发表于 2012-9-20 22:09
谢谢!确定这样可以?我试了还是不行哦
我这边可以哎~
算了,这样肯定没错了,即使名字没这么规律也可以
proc sql noprint;
select memname into :name separated by ' ' from sashelp.vcolumn where libname='WORK'
and prxmatch('/[a][\d]{5}/',lowcase(memname));
quit;
%put &name;
data new;
set &name;
run;

19
shenliang_111 发表于 2012-9-22 17:06:36
把你需要合并的变量名 放在 一个 宏变量里面,然后 set 宏变量,就ok了!

20
Tigflanker 发表于 2012-9-22 17:59:42
  1. data a;  *我的解答很初级,不过应该可以给你解决问题,excel的方法最实用;
  2. input x @@;
  3. cards;
  4. 1 2 3 4 5 6
  5. ;
  6. run;

  7. data a00123 a00023 a00003;  *选三个200内的代表,分别包含12,34,56;
  8. set a;
  9. if (x=1 or x=2) then output a00123;
  10. else if (x=3 or x=4) then output a00023;
  11. else output a00003;
  12. run;

  13. %macro m;  *设置三层遍历,会有197条报错:未发现数据集。不过结果OK的;
  14. %do i=0 %to 9;
  15.   %do j=0 %to 9;
  16.     %do k=0 %to 2;
  17.       data m;set m a00&k.&j.&i.;run;
  18.     %end;
  19.   %end;
  20. %end;
  21. %mend;

  22. %m;
复制代码


Bye SAS.
若有缘,能重聚。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 19:53