SAS:根据单元格值命名表

时间:2017-10-26 13:50:55

标签: sas sas-macro

我有一个Excel文件,它总是具有相同的名称,但表的内容会发生变化。我正在寻找一个代码,根据其中一个单元格中的值来命名表。

例如:

如果小区A3等于"就业信息",我希望将该表命名为" Jobs"。 如果单元格A3等于"通货膨胀信息",我希望表格被命名为"货币"。

我想定义一个宏(即%table(filename,cell)),或者if then else语句的一个循环来实现这一点。不幸的是,我似乎无法逻辑地围绕这个问题。如果有SAS经验的人可以帮助我,那将是非常棒的。我将尽快编辑我的问题,以包含一些我已经尝试但未能完成工作的代码。

1 个答案:

答案 0 :(得分:3)

您需要阅读数据才能找到内容。然后,您可以创建一个宏变量,以便使用PROC DATASETS轻松重命名数据集。

假设您已将Excel工作表转换为名为WORK.HAVE的数据集。我们还假设您知道哪个变量包含来自A列的数据,让我们调用该变量A.数据中是否有任何内容可以判断哪个观察值是使用的?现在让我们假设A3是指第二次观察,因为工作表的第一行应该有变量名。

所以在这种情况下你需要这样的东西:

%let newname=have;
data _null_;
  set have (firstobs=2);
  if A="Employment Information" then call symputx('newname','Jobs');
  else if A="Inflation Information" then call symputx('newname','Currency');
  stop;
run;
proc datasets nolist lib=work;
  change have=&newname;
  run;
quit;