全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
18460 9
2010-01-23
用在宏里面的。我知道判断一个data set是否存在可以用%sysfunc(exist(data-set name));
但是我现在只想要知道一个data set里面的某个变量是否存在应该用什么程序呢?
比如说data set是sasuser.a,我想要知道a里面的变量b是否存在。这个程序要能放在宏里使用。


我查了一下可以跟%sysfunc的普通程序,好像没有找到,cexist,filexist这样的都不行。拜求!


谢谢各位了!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-1-23 06:55:44
晕,我还以为是计量呢,sorry我准备回答Hypothesis testing to test the significance of parameter。看来没有用了
二维码

扫码加我 拉你入群

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

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

2010-1-23 10:58:37
data a;
  b = 1; c = 2; output;
run;

%macro existsVariable(lib =, ds =, var =);
  %local dsid check rc;
  %let dsid = %sysfunc(open(&lib..&ds.));
  %let check = %sysfunc(varnum(&dsid., &var.));
  %let rc = %sysfunc(close(&dsid.));
  %if &check. = 0 %then %do;
    0
  %end; %else %do;
    1
  %end;
%mend existsVariable;

%put %existsVariable(lib = work, ds = a, var = b);

1# elliott828
二维码

扫码加我 拉你入群

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

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

2010-1-23 11:03:39
elliott828 发表于 2010-1-23 06:39
用在宏里面的。我知道判断一个data set是否存在可以用%sysfunc(exist(data-set name));
但是我现在只想要知道一个data set里面的某个变量是否存在应该用什么程序呢?
比如说data set是sasuser.a,我想要知道a里面的变量b是否存在。这个程序要能放在宏里使用。


我查了一下可以跟%sysfunc的普通程序,好像没有找到,cexist,filexist这样的都不行。拜求!


谢谢各位了!
See below.

%macro checkvar(dsn=, var=);
   options nonotes;
   ***Note: 0---not found :: 1---found;
    proc contents data=&dsn out=_name_(keep=name) noprint; run;
     %local rc;
     %let rc=0;

    data _null_;
      set _name_;
      call symputx('rc','1');
      where upcase(name)="%upcase(&var)";
    run;

    %put rc=&rc  ;

%mend;

%checkvar(dsn=sashelp.class, var=age)
%checkvar(dsn=sashelp.class, var=age2)
二维码

扫码加我 拉你入群

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

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

2013-5-9 17:25:00
bobguy 发表于 2010-1-23 11:03
See below.

%macro checkvar(dsn=, var=);
Hi,bobguy,变量age2不在数据集中时,感觉此时的宏变量 rc的值仍然应该是1,但执行的结果是0,不知道是咋回事,望不吝指教,谢谢!
    data _null_;
      set _name_;
      call symputx('rc','1');
      where upcase(name)="%upcase(&var)";
    run;
二维码

扫码加我 拉你入群

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

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

2013-5-9 21:00:58
Eternal0601 发表于 2013-5-9 17:25
Hi,bobguy,变量age2不在数据集中时,感觉此时的宏变量 rc的值仍然应该是1,但执行的结果是0,不知道是咋回 ...
因为where Statement. 只读入满足where条件的数据。 当where name = “Age2”,没有数据被读入, call symputx('rc','1') 没有执行。rc = 0
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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