全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2625 6
2012-10-15
我想把一张表中符合条件的某个观测赋予这张表中某一个观测变量的某一条,于是我写了如下程序,但是没有达到如期效果,请各位点拨点拨哇

data try;
set xunhuan para;
arch0=0;/*给变量赋初始值*/
if variable="ARCH0" then call symput('a',variable);
if _n_=78 then arch0=&a;/*78是一个例子,在实际中我用另一个宏控制*/
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2012-10-15 16:51:22
if _n_=78 then arch0=resolve('&a');
二维码

扫码加我 拉你入群

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

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

2012-10-16 09:28:52
You can do it without using any macro variable ass below,



data try;
retain a ;
drop a;
set xunhuan para;
arch0=0;
if variable="ARCH0" then a=variable;
if _n_=78 then arch0=a;
run;
二维码

扫码加我 拉你入群

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

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

2012-10-19 20:17:22
pobel 发表于 2012-10-15 16:51
if _n_=78 then arch0=resolve('&a');
沙发的这位朋友,先谢谢您,用您的程序跑出来是这样的。

NOTE: 字符值已转换为数值,位置:(行:列)。
      13:37
WARNING: 没有解析符号引用 A。
NOTE: 无效的数值数据“&a”出现在行 13 列 37。

这是为什么呢?有没有修改的办法,谢谢
二维码

扫码加我 拉你入群

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

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

2012-10-19 20:18:22
bobguy 发表于 2012-10-16 09:28
You can do it without using any macro variable ass below,
您好,感谢您的回答,但是用您的方法跑出来,那个arch0=.是空值,这是为什么呢,系统也没提示出错?
二维码

扫码加我 拉你入群

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

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

2012-10-20 07:39:08
按时地方 发表于 2012-10-19 20:17
沙发的这位朋友,先谢谢您,用您的程序跑出来是这样的。

NOTE: 字符值已转换为数值,位置:(行:列) ...
1. 你的程序中首先将arch0赋值为0,决定arch0为一个数值型。而后边又试图将字符串赋值给这个变量,这造成了 “NOTE: 字符值已转换为数值,位置:(行:列)。”
2. 至于警告“WARNING: 没有解析符号引用 A。”,我感觉应该是resolve()执行之前,call symput那一句还没有执行。

36   data try;
37    variable="ARCH0";
38    call symput('a',variable);
39    if _n_=1 then arch0=resolve('&a');
40    put arch0=;
41
42    x=4;
43    if x=5 then call symputx('b',x);
44    arch1=resolve('&b');
45    put arch1=;
46    run;

arch0=ARCH0
WARNING: Apparent symbolic reference B not resolved.
arch1=&b
NOTE: The data set WORK.TRY has 1 observations and 4 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 second


二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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