首页 > 解决方案 > SAS中是否可以将一列中的值分配给另一列中的宏变量

问题描述

我已经失去了可能已经找到了解决我问题的方法。

我有两列VarNameVarDate

我想将VarDate的值分配给VarName列中的宏变量,而不是一一单独命名它们。

结果应该是 14 个带有赋值的宏变量。

例如:

如果我要写 %put &A_10; 它应该返回我的价值 14/06/2020

如果我要写 %put &A_11; 它应该返回我的价值 12/06/2020

如果我要写 %put &G_11; 它应该返回我的价值 31/12/2021

data have;
input VarName $ VarDate :ddmmyy10.;
format VarDate ddmmyy10.;
datalines;
A_10 14/06/2020
A_11 12/06/2020
B_10 30/06/2020
B_11 30/06/2020
C_10 31/05/2020
C_11 29/05/2020
D_10 30/04/2020
D_11 30/04/2020
E_10 31/03/2020
E_11 31/03/2020
F_10 29/02/2020
F_11 28/02/2020
G_10 31/12/2021
G_11 31/12/2021
;
run;

标签: variablessassas-macro

解决方案


它工作正常。登录结束评论:

data have;
input VarName $ VarDate :ddmmyy10.;
format VarDate ddmmyy10.;
datalines;
A_10 14/06/2020
A_11 12/06/2020
B_10 30/06/2020
B_11 30/06/2020
C_10 31/05/2020
C_11 29/05/2020
D_10 30/04/2020
D_11 30/04/2020
E_10 31/03/2020
E_11 31/03/2020
F_10 29/02/2020
F_11 28/02/2020
G_10 31/12/2021
G_11 31/12/2021
;
run;

data _null_;
    set have;
        call symput(VarName,put(VarDate,ddmmyys10.));
run;

%put &A_10.;
%put &A_11.;
.
.
.
.
/*results in the log:

4116  %put &A_10.;
14/06/2020
4117  %put &A_11.;
12/06/2020

*/

推荐阅读