【发布时间】:2021-03-23 05:32:26
【问题描述】:
我正在尝试将字符串宏变量附加到 SAS 中的数据集名称。我想创建读取类似 work.cps2020jan 和 work.cps2020feb 的数据集。但这不是我得到的。我的代码:
%macro loop(values);
%let count=%sysfunc(countw(&values));
%do i = 1 %to &count;
%let value=%qscan(&values,&i,%str(,));
%put &value;
data work.cps2020&value.;
set "A:\cpsb2020&value" ;
mth = "&value.";
keep
PEMLR
mth
;
run;
%end;
%mend;
%loop(%str(jan,feb));
运行此代码会在日志中产生以下输出:
NOTE: There were 138697 observations read from the data set
A:\cpsb2020jan.
NOTE: The data set WORK.CPS2020 has 138697 observations and 2 variables.
NOTE: The data set WORK.JAN has 138697 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 4.29 seconds
cpu time 0.20 seconds
feb
NOTE: There were 139248 observations read from the data set
A:\cpsb2020feb.
NOTE: The data set WORK.CPS2020 has 139248 observations and 2 variables.
NOTE: The data set WORK.FEB has 139248 observations and 2 variables.
NOTE: DATA statement used (Total process time):
real time 4.44 seconds
cpu time 0.15 seconds
我不明白为什么我的宏在每个循环中创建两个数据集,而不是在每个循环中创建一个名为 work.cps2020jan 和 work.cps2020feb 的数据集。如果我改变 &value。到&i。 SAS 输出 work.cps20201 和 work.cps20202。但这不是我想要的。
有什么见解吗?
【问题讨论】:
标签: sas