SAS:基于单元格值命名表

SAS:基于单元格值命名表,sas,sas-macro,Sas,Sas Macro,我有一个Excel文件,它总是具有相同的名称,但表的内容会发生变化。我希望编写一个代码,根据其中一个单元格中的值命名表 例如: 如果单元格A3等于“就业信息”,我希望表格命名为“就业”。 如果单元格A3等于“通货膨胀信息”,我希望表格命名为“货币” 等等 我想定义一个宏(即%表(文件名,单元格)),或一个if-then-else语句循环来实现这一点。不幸的是,我似乎无法从逻辑上理解这一点。如果有人在SAS有经验,可以帮助我,这将是了不起的。我将编辑我的问题很快包括一些代码,我已经尝试,但没有得到

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

例如:

如果单元格A3等于“就业信息”,我希望表格命名为“就业”。 如果单元格A3等于“通货膨胀信息”,我希望表格命名为“货币”

等等


我想定义一个宏(即
%表(文件名,单元格)
),或一个if-then-else语句循环来实现这一点。不幸的是,我似乎无法从逻辑上理解这一点。如果有人在SAS有经验,可以帮助我,这将是了不起的。我将编辑我的问题很快包括一些代码,我已经尝试,但没有得到工作完成

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

假设您已将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;

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

假设您已将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;

“命名一张桌子”对不起,我没有说得更具体。也许我应该称之为表创建。创建表或数据表时,它有一个名称。例如,创建表作为。。。或数据集。。。。;现在有意义了吗?A3是一个Excel参考。在读取您创建的实际SAS数据集时,您将如何找到该值?什么变量名代表列A?你怎么知道使用哪种观察法呢?也许它更有意义,但你需要包括承诺的代码和示例。也许我应该称之为表创建。创建表或数据表时,它有一个名称。例如,创建表作为。。。或数据集。。。。;现在有意义了吗?A3是一个Excel参考。在读取您创建的实际SAS数据集时,您将如何找到该值?什么变量名代表列A?您如何知道使用哪种观察方法?也许它更有意义,但您需要包含承诺的代码和示例。谢谢。我使用了您提供的框架,并能够使其正常工作。我感谢你的帮助!谢谢你。我使用了您提供的框架,并能够使其正常工作。我感谢你的帮助!