楼主: 小鳄鱼a
2992 10

关于宏 [推广有奖]

  • 6关注
  • 10粉丝

已卖:280份资源

学科带头人

3%

还不是VIP/贵宾

-

威望
0
论坛币
125 个
通用积分
0.0040
学术水平
40 点
热心指数
45 点
信用等级
43 点
经验
32801 点
帖子
1185
精华
0
在线时间
1539 小时
注册时间
2009-7-16
最后登录
2018-10-5

楼主
小鳄鱼a 发表于 2015-12-29 19:57:04 |AI写论文
100论坛币






想把  id company group   用一个输入表达出来
大概如下面意思  
%sortdata( byvars=id company group)


proc sort data 中

by &byvars



但这样出现  

ERROR: 没有为宏定义关键字参数


请问该怎么做

最佳答案

孤单的我们 查看完整内容

原来是错别字... proc sort data=&Nindex;by &bybars;run; 定义的宏变量是byvars
关键词:company compan Group Error Data 宏命令 company 关键字 ERROR

沙发
孤单的我们 发表于 2015-12-29 19:57:05
小鳄鱼a 发表于 2015-12-30 23:13
%macro sortvar(index=,byvars=,delim=%str( ));

%let i=1;
原来是错别字...

proc sort data=&Nindex;by &bybars;run;

定义的宏变量是byvars

藤椅
zhengbo8 发表于 2015-12-30 08:43:44
%sortdata( byvars=%str(id company group))

板凳
Tigflanker 发表于 2015-12-30 08:47:10
我也经常这么用,看起来没神马问题

语句100%是这么写的么?有没有log截图?

报纸
孤单的我们 发表于 2015-12-30 09:17:53
宏变量byvars解析为id,后面的company group当做2个宏参数了

地板
sniperhgy 发表于 2015-12-30 11:26:10
@zhengbo8 @孤单的我们 SAS宏参数的分隔符貌似是逗号,不是空格^_^

@Tigflanker 嗯,确实,我也这么用,没有出现问题

@小鳄鱼a 请给出完整的程序,我们帮你看看。

7
pobel 在职认证  发表于 2015-12-30 14:07:43
这样? %sortdata(id company group)

8
小鳄鱼a 发表于 2015-12-30 23:06:48
pobel 发表于 2015-12-30 14:07
这样? %sortdata(id company group)
%macro sortvar(index=,dat=,delim=%str( ));

%let i=1;
%do %while(%scan(%quote(&index),&i,%quote(&delim)) ne );
%let Nindex=%scan(%quote(&index),&i,%quote(&delim));

proc sort data=&Nindex;by &bybars;run;
/*proc sort data=&Nindex;by &bybars;run;*/
%let i=%eval(&i+1);
%end;

%mend;
%sortvar(index=%str(age9   profit54),
byvars=%str(id company group),
delim=%str( ));

9
小鳄鱼a 发表于 2015-12-30 23:07:16
sniperhgy 发表于 2015-12-30 11:26
@zhengbo8 @孤单的我们 SAS宏参数的分隔符貌似是逗号,不是空格^_^

@Tigflanker 嗯,确实,我也这么用, ...
%macro sortvar(index=,dat=,delim=%str( ));

%let i=1;
%do %while(%scan(%quote(&index),&i,%quote(&delim)) ne );
%let Nindex=%scan(%quote(&index),&i,%quote(&delim));

proc sort data=&Nindex;by &bybars;run;
/*proc sort data=&Nindex;by &bybars;run;*/
%let i=%eval(&i+1);
%end;

%mend;
%sortvar(index=%str(age9   profit54),
byvars=%str(id company group),
delim=%str( ));

10
小鳄鱼a 发表于 2015-12-30 23:07:33
孤单的我们 发表于 2015-12-30 09:17
宏变量byvars解析为id,后面的company group当做2个宏参数了
%macro sortvar(index=,dat=,delim=%str( ));

%let i=1;
%do %while(%scan(%quote(&index),&i,%quote(&delim)) ne );
%let Nindex=%scan(%quote(&index),&i,%quote(&delim));

proc sort data=&Nindex;by &bybars;run;
/*proc sort data=&Nindex;by &bybars;run;*/
%let i=%eval(&i+1);
%end;

%mend;
%sortvar(index=%str(age9   profit54),
byvars=%str(id company group),
delim=%str( ));

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-1 00:48