全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
10631 20
2010-12-26
悬赏 15 个论坛币 已解决
call symputx 似乎只能提取data步的最后一行某变量的值,有没有办法让他对每一行的某变量的值进行提取,比如说如何实现如下代码:

data b;
set a;
call symputx("d1",trim(d1));
call symputx("d2",trim(d2));
variance=std(of &d1-&d2);
run;

如何让call symputx在每一行都停留并提取改行变量d1和d2的值?请各位指点迷津啊!
顺带弱问一句,宏变量的值能不能随表中某变量的值变化呢?

最佳答案

soporaeternus 查看完整内容

我不会写of var list里的数组,只能这样了,希望高手指教,这个效率要高于昨天晚上那个,呵呵
二维码

扫码加我 拉你入群

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

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

全部回复
2010-12-26 20:21:35
复制代码
我不会写of var list里的数组,只能这样了,希望高手指教,这个效率要高于昨天晚上那个,呵呵
二维码

扫码加我 拉你入群

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

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

2010-12-26 21:50:20
论坛里有位前辈说过,如果用到宏变量需要按行即时更新取值,那么就需要考虑这个宏变量使用的必要性。(大致意思)
我想这可以解决楼主的困惑。
楼主列举代码可能会由于宏变量需要首先compile而报错(&d1 &d2之前不存在而由该步建立)。
call symputx可以在dataset的任何一行,多行赋任意变量的值给宏变量,就是增加对于行数或者是对应变量取值的限制。例如if _n_=10 then call symputx(......);或者是if gender='M' then call symputx(......);
二维码

扫码加我 拉你入群

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

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

2010-12-27 11:09:26
2# soporaeternus

多谢楼上的回答。难道说要让macro的值是变化这种想法是不可取的?call symput 直接加条件限制也没效果。看来还得继续加深学习了。
二维码

扫码加我 拉你入群

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

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

2010-12-27 14:03:44
还是没明白应该如何解决!!
二维码

扫码加我 拉你入群

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

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

2010-12-27 20:50:24
楼主的想法,可以实现,不过如果对每一行某变量来赋值给宏变量的话,那么肯定是要生成多个宏变量了,如:
复制代码
这段程序是把sashelp.class里的weight值赋值给宏变量weight_1  weight_2 .... 等等。  1  2 对应的是观测的行数。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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