全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2555 5
2017-11-06
悬赏 50 个论坛币 未解决
假设我有2个变量名var1 var2,一个是字符型一个是数字型。现在希望下面程序红色部分能把X解析为变量名。请问如何实现?非常感谢!
反过来变量名又如何转换为字符串?

%let checkList=var1 var2;
data _temp1;
                set lib.raw;
                length X $10.;
                do i=1 to 2;
                        X=scan("&checkList",i);
                       if function(X)=1 then ....;
               end;

run;
二维码

扫码加我 拉你入群

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

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

全部回复
2017-11-12 09:13:10
复制代码
二维码

扫码加我 拉你入群

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

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

2017-11-12 09:56:10
Strive、 发表于 2017-11-12 09:13
不是这种意思,是要将字符串转SAS文本。你的程序是文本转文本。
所谓字符串就是在data步里面的var="XXX",那么XXX就是字符串。而%let x=XXX,其XXX就是SAS文本
二维码

扫码加我 拉你入群

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

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

2017-11-12 12:38:19
caibirdcnb 发表于 2017-11-12 09:56
不是这种意思,是要将字符串转SAS文本。你的程序是文本转文本。
所谓字符串就是在data步里面的var="XXX" ...
复制代码
二维码

扫码加我 拉你入群

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

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

2017-11-12 14:49:45
Strive、 发表于 2017-11-12 12:38
call symput没错,但我的需求是在同一data步内把call symput定义的宏变量的值取出来。 请看看我的示例程序。我需要某2个函数或技巧,其中fun1是将字符串赋值给数据集的变量fun2是将变量的值变成SAS文本。这才是我的需求。谢谢!


下面程序期望:1. 变量X的值是字符串var1=var2,2. fun2(X)的值是SAS文本var1=var2

%let checkList=var1 var2;
data _temp1;
                set lib.raw;
                length X $10.;
                do i=1 to 2;
                        X=X||'='||fun1("&checkList",i);
                       if fun2(X)=1 then ....;
               end;

run;

二维码

扫码加我 拉你入群

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

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

2017-11-12 18:51:49
caibirdcnb 发表于 2017-11-12 14:49
call symput没错,但我的需求是在同一data步内把call symput定义的宏变量的值取出来。 请看看我的示例程序 ...
这个目前没找到实现方法,symput的宏变量没法在同一个data步使用的
symput是在data步运行的时候产生的,而宏编译是在之前。
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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