【发布时间】:2013-10-23 00:20:29
【问题描述】:
所以我正在尝试创建新列 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;
最终,我尝试为每个买家的购买创建单独的列,以进行回归分析,其中仅包含某个买家的购买价值。如果您对如何使用宏变量自动执行此类过程有任何建议,请告诉我。
【问题讨论】:
-
如果您提供了示例数据,您可能会获得其他解决方案。