SAS:根据单元格值命名 table

SAS: Naming a table based on a cell value

我有一个 Excel 文件,它始终具有相同的名称,但 table 的内容发生了变化。我正在寻找基于其中一个单元格中的值来命名 table 的代码。

例如:

如果单元格 A3 等于 "Employment Information",我希望将 table 命名为 "Jobs"。 如果单元格 A3 等于 "Inflation Information",我希望将 table 命名为 "Currency"。

等等

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

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

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

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

%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;