【发布时间】:2017-08-07 15:47:27
【问题描述】:
我正在尝试连接 SAS Enterprise 指南中的一些变量。
我从SAS_table 开始,它看起来像(注意plums 的空列和pears 的空观察:
id farm apples pears cherries plums
1 'Munich' 'Granny' 'Williams' 'RedDelight'
2 'Amsterdam' 'PinkLady' 'Scrumptious
3 'Moscow' 'Braeburn' 'Williams' 'RedDelight'
然后我创建全局变量如下:
%do i = 1 %to 3;
%global farm_&i., apples_&i., pears_&i., cherries_&i., plums_&i.;
%end;
并且我将上表存储在全局变量中如下:
data _NULL_;
set SAS_table;
%do i = 1 %to 3;
if id = &i. then do;
call symput("farm_&i.", farm);
call symput("apples_&i.", apples);
call symput("pears_&i.", pears);
call symput("cherries_&i.", cherries);
call symput("plums_&i.", plums);
end;
%end;
run;
以上所有似乎都运行顺利。在下一步中,我希望各个变量获得以下输出(请注意,只是跳过空值 - 没有为这些情况设置额外的分隔符(“::”)):
concat_1: Munich :: Granny :: Williams :: RedDelight
concat_2: Amsterdam :: PinkLady :: Scrumptious
concat_3: Moscow :: Braeburn :: Williams :: RedDelight
为此,我使用以下代码:
data _NULL_;
%do i = 1 %to 3;
call_symput("concat_&i",catx(" :: ", &&farm_&i., &&apples_&i.., &&pears_&i..,
&&cherries_&i.., &&plums_&i..));
%end;
run;
但是,当我运行此代码时,我得到了错误:
ERROR 159-185: Null parameters for CATX are invalid.
我在这里的假设是 SAS 不满意,因为某些变量可能是空值。但是我该如何解决这个问题?我已经搞砸了负载,似乎无法找到一个好的答案。
【问题讨论】:
-
在您的 CATX() 中,您需要将宏变量括在引号中。现在它正在寻找导致问题的全部为空的变量名。
-
Ps catx('::', of farms--plums);应该从一开始就工作。
-
你为什么要处理所有这些宏变量中的混乱?使用数据步骤。
-
@Joe:因为客户这么说@Reeza:
catx('::', of farms--plums);对我有用,但包含变量并没有最终起作用。不过,这可以作为一个快速修复,所以谢谢:-)
标签: sas