全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2661 4
2015-06-10
data new;
  set old;

rename vara=_vara;
vara=input(_vara, best.);

run;


为什么sas会报错如下:

NOTE: Variable _vara is uninitialized.
WARNING: Variable _vara already exists on file new.

我非常确认data set new里没有_vara这个变量。

如果不想用set old (rename=(vara=_vara)); 有没有更好得方法可以解决这个问题?




二维码

扫码加我 拉你入群

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

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

全部回复
2015-6-10 16:33:45
http://support.sas.com/documentation/cdl/en/lestmtsref/67407/HTML/default/viewer.htm#n0x16kvqkxxdx5n1t04voifvo8wo.htm

你错误出现的原因可以参考官方的support

The new variable names are written to the output data set only. Use the old variable names in programming statements for the current DATA step. RENAME applies to all output data sets.

新的变量名字_vara只会被导出到生成的数据集里, 要在中间的statement里用到这个变量还是得reference原来的老名字。


这样看来还是用set old (rename=(vara=_vara)); 更好。因为你改了名字,在下面的语句中就能立马使用。
二维码

扫码加我 拉你入群

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

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

2015-6-10 20:08:10
因为你这里的rename vara=_vara;语句只有在run的最后才会生效
所以你的程序其实就是直接vara=input(_vara, best.);而_vara此刻是不存在的,肯定出错
想用回原来的varname,肯定是要rename的。不放在set语句里就要放在data new (rename=···)
二维码

扫码加我 拉你入群

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

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

2015-6-15 10:11:10
WUPUQU 发表于 2015-6-10 20:08
因为你这里的rename vara=_vara;语句只有在run的最后才会生效
所以你的程序其实就是直接vara=input(_vara, ...
谢谢!
二维码

扫码加我 拉你入群

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

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

2015-6-15 10:11:57
sas那个石家庄人 发表于 2015-6-10 16:33
http://support.sas.com/documentation/cdl/en/lestmtsref/67407/HTML/default/viewer.htm#n0x16kvqkxxdx5n ...
谢谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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