全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2734 11
2013-01-08
数据集test1大致如下:
ID data1 data2 aaa bbb
1 321 332 1 0
2 123 123 2 0
3 444 212 1 0
...
现在想用一个data步让bbb的值变成data1或是data2,至于是变成data1还是data2由aaa的值来决定,即aaa为1时,bbb=data1;aaa为2时,bbb=data2;
我写成写成这样是肯定是不成功的:
data test1;
set test1;
%let temp=aaa;
bbb=data&temp;
run;
请问应该怎么做?(实际上的数据集要变量比这个多很多而且更复杂,所以感觉必须用宏来解决)
是要用到call symput?  SYMGET? 反正折腾了半天我是搞不明白了
本人系新手加外行,求教高手,多谢。希望有完整的程序,或者比较详细的解答,麻烦了。
二维码

扫码加我 拉你入群

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

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

全部回复
2013-1-8 18:43:26
一个三个变量的例子。
复制代码
二维码

扫码加我 拉你入群

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

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

2013-1-8 18:55:08
webgu 发表于 2013-1-8 18:43
一个三个变量的例子。
多谢,这个程序的确能解决我的问题,不过还是很想知道怎么在data步中把数据表中的值赋给宏变量,高手能否指点一二。
二维码

扫码加我 拉你入群

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

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

2013-1-8 19:02:52
data 中可以用call symputx('temp',aaa)把datase里的值组宏变量。但只能在下一个data步用。且这种方法只能保留得到最后一个纪录赋的值。

data _null_;
   set demo;
call symputx('temp',aaa);
run;

%put  &temp;
二维码

扫码加我 拉你入群

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

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

2013-1-8 19:20:43
webgu 发表于 2013-1-8 19:02
data 中可以用call symputx('temp',aaa)把datase里的值组宏变量。但只能在下一个data步用。且这种方法只能 ...
多谢,就是说data中没有我所设想的那种完美的利用宏变量去读取变量值的办法呗?
二维码

扫码加我 拉你入群

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

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

2013-1-8 19:24:55
data _null_;
   set demo;
call symputx(cats('temp',_n_),aaa);
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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