楼主: sophiesdaisy
4796 10

求助 :宏嵌套时候出现的问题。 [推广有奖]

  • 3关注
  • 1粉丝

已卖:509份资源

讲师

41%

还不是VIP/贵宾

-

威望
0
论坛币
4241 个
通用积分
11.1793
学术水平
5 点
热心指数
6 点
信用等级
3 点
经验
11216 点
帖子
423
精华
0
在线时间
456 小时
注册时间
2008-3-4
最后登录
2024-8-21

楼主
sophiesdaisy 发表于 2012-1-31 11:01:15 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
求助 :宏嵌套时候出现的问题。
ERROR: 条目锁定不可用于 GETDATA_EASY.MACRO(目录 WORK.SASMACR 中),由 DMS Process 锁定。
ERROR: 条目 GETDATA_EASY.MACRO 已经在目录 WORK.SASMACR 中存在

二维码

扫码加我 拉你入群

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

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

关键词:sasmacr Process Macro Error Data ERROR

回帖推荐

maidenhan 发表于5楼  查看完整内容

Try the following code. libname fund "F:\SAS\20120120"; %macro getdata_easy1(n); %let var1 = %eval( 9+&n.); %let var2 = %eval(42+&n.); %let var3 = %eval(43+&n.); %let var4 = %eval(78+&n.); %let var5 = %eval(79+&n.); %let var6 = %eval(80+&n.); data fund.d&n.; set fund.refine20120120; keep %do ii = 1 %to 6; %sysfunc(compress(_COL&&var&ii..)) %end;; run; %mend getdata_eas ...

本帖被以下文库推荐

沙发
sophiesdaisy 发表于 2012-1-31 17:24:03
求帮助~

我就是想用简便的方法拆分数据集,按照一定的规律,两个宏,一个宏用来循环,一个宏用来拆分。

藤椅
sophiesdaisy 发表于 2012-2-1 08:27:22
libname fund  "F:\SAS\20120120";
   %macro getdata_easy1(n);
         data fund.d&n.;
         set fund.refine20120120;
         keep _COL(9+&n.)  _COL(42+&n.) _COL(43+&n.)  _COL(78+&n.)_COL(79+&n.)   _COL(80+&n.)   ;
          run;
  %mend getdata_easy1;
  %macro getdata_easy(i);
   %local n=1;
   %do %while(n<=&i.);
          %getdata_easy1(n);
        n=(n+1);
   %end;
  %mend getdata_easy;

%getdata_easy(20)


代码如上,getdata_easy1是用来拆分数据集的,getdata_easy是用来循环的,一共要循环20次,拆分数据集为20个。

板凳
sophiesdaisy 发表于 2012-2-1 08:28:27
求帮助!!!!!

报纸
maidenhan 发表于 2012-2-1 10:06:41
sophiesdaisy 发表于 2012-2-1 08:28
求帮助!!!!!
Try the following code.

libname fund  "F:\SAS\20120120";
%macro getdata_easy1(n);
%let var1 = %eval( 9+&n.);
%let var2 = %eval(42+&n.);
%let var3 = %eval(43+&n.);
%let var4 = %eval(78+&n.);
%let var5 = %eval(79+&n.);
%let var6 = %eval(80+&n.);
data fund.d&n.;
        set fund.refine20120120;
        keep %do ii = 1 %to 6;
                        %sysfunc(compress(_COL&&var&ii..))
                 %end;;
run;
%mend getdata_easy1;
%macro getdata_easy(i);
%local %let n = 1;
%do %while(&n.<=&i.);
        %getdata_easy1(&n.);
        %let n = %eval(&n.+1);
%end;
%mend getdata_easy;

%getdata_easy(20);
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

地板
sophiesdaisy 发表于 2012-2-1 10:39:38
maidenhan 发表于 2012-2-1 10:06
Try the following code.

libname fund  "F:\SAS\20120120";
啊 多谢好人+高人 我实施~~

7
sophiesdaisy 发表于 2012-2-1 10:58:13
sophiesdaisy 发表于 2012-2-1 10:39
啊 多谢好人+高人 我实施~~
看懂函数了, 很好的方法,可是仍然存在一些问题 ,不知如何解决~~
就是编译完了日志里面就把程序重复了一遍,但是数据集并没有生成。。请问高人如何解决?

8
sophiesdaisy 发表于 2012-2-1 11:02:24
maidenhan 发表于 2012-2-1 10:06
Try the following code.

libname fund  "F:\SAS\20120120";
看懂函数了, 很好的方法,可是仍然存在一些问题 ,不知如何解决~~
就是编译完了日志里面就把程序重复了一遍,但是数据集并没有生成。。请问高人如何解决?

9
maidenhan 发表于 2012-2-1 11:18:31
sophiesdaisy 发表于 2012-2-1 11:02
看懂函数了, 很好的方法,可是仍然存在一些问题 ,不知如何解决~~
就是编译完了日志里面就把程序重复了 ...
Please try again without the code, "%local ", which is the only thing I'm not clear about.

10
sophiesdaisy 发表于 2012-2-1 11:50:04
maidenhan 发表于 2012-2-1 11:18
Please try again without the code, "%local ", which is the only thing I'm not clear about.
sorry, 还是不行呢,而且我运行待宏的程序总是有类似问题,我总是怀疑,带宏的程序建立的数据**是隐含的,而不能存下来。  你觉得呢?

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

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