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;
我有一个 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;