因此,我正在尝试创建新列 mon_&cur_buy 和 times_&cur_buy,它们分别保存从 work.t 表中设置为值 money 和 times 的值。
为新变量分配其值的标准是 &cur_buy 宏变量的名称是否与 work.t 表中 BuyName 的当前行的值匹配。
引用的 &buyers 宏变量只是一个用逗号分隔的名称列表。
我说新变量 mon_&cur_buy 和 times_&cur_buy 无效的错误。
名称已正确解析,但从未写入新数据集 decvars。
%let names = %quote(&buyers);
%let count = %sysfunc(countw(&buyers));
data decvars;
set work.t;
i=1;
do while (i <= &count);
%let cur_buy = %qscan(&names,&i,%str(,));
length mon_&cur_buy 8;
length times_&cur_buy 8;
if BuyName = "&cur_buy" then do;
mon_&cur_buy = money; /*still getting that statement is invalid here*/
times_&cur_buy = times;
end;
i=i+1;
end;
run;
最终,我试图为每个买家的购买创建单独的列,以进行回归分析,其中只包含来自某个买家的购买价值。如果您对如何使用宏变量自动执行此类过程有任何建议,请告诉我。