SAS通过变量传递列名

SAS通过变量传递列名,sas,sas-macro,pass-through,Sas,Sas Macro,Pass Through,我需要通过变量传递列名 %let dsn=a1234; data temp; set &a1234; if age>=20; run; 其中“a1234”是我要使用的列名(存在于文件中);而不是字符串a1234 我想这样做的原因是在脚本的顶部定义了所有参数,这使得代码更加干净(在本例中) 提前感谢您的反馈。您是在询问这样做吗 %let dsn=a1234; %Let column=Age; data temp; set &a1234; if &co

我需要通过变量传递列名

%let dsn=a1234;
data temp;
   set &a1234;
   if age>=20;
run;
其中“a1234”是我要使用的列名(存在于文件中);而不是字符串a1234

我想这样做的原因是在脚本的顶部定义了所有参数,这使得代码更加干净(在本例中)


提前感谢您的反馈。

您是在询问这样做吗

%let dsn=a1234;
%Let column=Age;
data temp;
 set &a1234;
 if &column>=20;
run;

你是在问做这件事吗

%let dsn=a1234;
%Let column=Age;
data temp;
 set &a1234;
 if &column>=20;
run;

尽管您的问题说
a1234
是一列,但这个答案将其视为数据集名称,正如您的代码示例中所使用的那样

你非常接近;您创建了一个名为
DSN
的宏变量,其值为a1234,但尝试引用名为
a1234
的宏变量。换句话说,请尝试以下方法:

%let DSN=a1234;
data temp;
   set &DSN;
   if age>=20;
run;

为强调而大写

尽管您的问题说
a1234
是一列,但这个答案将其视为数据集名称,正如您的代码示例中所使用的那样

你非常接近;您创建了一个名为
DSN
的宏变量,其值为a1234,但尝试引用名为
a1234
的宏变量。换句话说,请尝试以下方法:

%let DSN=a1234;
data temp;
   set &DSN;
   if age>=20;
run;
为强调而大写