楼主: wanzionline
2278 2

[其他] 求助如何使用sas宏命令批量处理数据 [推广有奖]

  • 0关注
  • 2粉丝

已卖:29份资源

本科生

39%

还不是VIP/贵宾

-

威望
0
论坛币
6888 个
通用积分
0.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1015 点
帖子
86
精华
0
在线时间
71 小时
注册时间
2011-10-26
最后登录
2021-1-26

楼主
wanzionline 发表于 2012-8-27 09:16:35 |AI写论文
50论坛币
具体问题是这样:想对一系列的数据集进行批量处理。需处理的数据集名称存储在一个数据集中(名字的规律为:data001-data100),请问如何使用宏命令来调用该数据集中的变量,一次调用一个观测?
我一般像下边这样使用,但是总是无法一次性的调用:
%macro example(number1,number2);
%do i=&number1 %to &number2;
%let number=00&i;
data &number;
.........
run;
%end;
%macro example;
然后先执行 example(data001---data009);
之后改为%let number=0&i;
再执行example(data010---data099);
之后还得再改为%let number-&i;
最后执行example(data100,data100);
这样太麻烦了,请问有没什么好的办法啊?
(注:出现以上问题的原因我猜是因为%do 命令的时候自动将&i变为数字型?然后丢失了前边的‘00’?)
请问有没有好办法直接从数据集中依次读入,然后进行操作啊?

最佳答案

Imasasor 查看完整内容

兄弟,如果你所有的数据集名字都在一个数据集中,并且为一个变量下的所观测,假设该变量为setlist,有100个观测。不管你数据集的名字有没有规律,都可以用sql将该变量的所有观测(即所有数据集的名字)赋值给100个宏变量,然后对宏变量所循环。程序如下: proc sql; select setlist into:c1-:c100 from a; quit; /*将100个名字赋给c1,c2,c3...c100等100个宏变量*/ %put &c1 &c100; /*观察一下宏变量的值,是否有错*/ %macro r ...
关键词:SAS宏 如何使用 批量处理 处理数据 宏命令

沙发
Imasasor 发表于 2012-8-27 09:16:36
兄弟,如果你所有的数据集名字都在一个数据集中,并且为一个变量下的所观测,假设该变量为setlist,有100个观测。不管你数据集的名字有没有规律,都可以用sql将该变量的所有观测(即所有数据集的名字)赋值给100个宏变量,然后对宏变量所循环。程序如下:
proc sql;
select setlist into:c1-:c100 from a;
quit; /*将100个名字赋给c1,c2,c3...c100等100个宏变量*/
%put &c1 &c100; /*观察一下宏变量的值,是否有错*/
%macro repeat;
%do i=1 %to 100;
data &&c&i;
....
run;
%end;
%mend;
%repeat;
用宏对你所有的数据集执行相同的程序
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

藤椅
Imasasor 发表于 2012-8-29 14:21:45
兄弟最近缺币,能否将50个币给我?
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

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

本版微信群
扫码
拉您进交流群
GMT+8, 2026-1-19 05:37