全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2038 10
2013-03-24
悬赏 50 个论坛币 已解决
程序如下:
data a;
input va $ @@;
cards;
a 一
;
run;

%macro m(var);
data b;set a;
  %if "va"="一" %then %do;vb=&var;%end;
  %else %do;vb=va;%end;
run;
%mend;

%m(二);


其实就想把一个数据集中某变量中符合条件的观测换掉(换成宏参数的内容)可是失败了。

求帮助,谢谢。

最佳答案

Eternal0601 查看完整内容

data a; input va $ @@; cards; a one ; run; %macro m(var); data b;set a; if va="one" then vb=&var; else vb=va; run; %mend; %m('two');
二维码

扫码加我 拉你入群

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

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

全部回复
2013-3-24 13:54:39
Eternal0601 发表于 2013-3-24 14:28
这个应该可以解决你的问题,你的code中用的是%if。。。%then是有问题的,“va”=“一”是false;故就执行 ...
data a;
input va $ @@;
cards;
a one
;
run;

%macro m(var);
data b;set a;
  if va="one" then vb=&var;
  else vb=va;
run;
%mend;

%m('two');
二维码

扫码加我 拉你入群

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

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

2013-3-24 13:59:46
我明白&var只是一段文本,但是不知道怎么把他转化为字符串,用过 %str 、 %symget 都不行
二维码

扫码加我 拉你入群

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

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

2013-3-24 14:10:30
look
二维码

扫码加我 拉你入群

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

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

2013-3-24 14:24:52
%macro m1(var);
data b1;set a;
  if va="one" then vb=&var;
  else vb=va;
run;
%mend;

%m1('two');
二维码

扫码加我 拉你入群

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

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

2013-3-24 14:28:19
Eternal0601 发表于 2013-3-24 14:24
%macro m1(var);
data b1;set a;
  if va="one" then vb=&var;
这个应该可以解决你的问题,你的code中用的是%if。。。%then是有问题的,“va”=“一”是false;故就执行%else语句,vb=va,从而使你的code结果只是多产生一个值跟va变量一样的变量b而已
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群