我有一个sas程序,它合并了两个包含给定城市信息的数据集。城市名称是每个数据集标题的一部分,例如亚特兰大:
data work.AtlantaComplete;
merge dir.Atlanta1 dir.Atlanta2;
by mergevar;
run;
我想在一个长长的城市列表上运行合并,而不必为每个城市创建一个单独的.sas文件。由于对SAS了解有限,我尝试了以下几点:
%let city1 = Boston;
...
%let cityN = Miami;
%DO for i = 1 to N;
data work.city&i;
set dir.city&i
我在SAS里有个密码。
proc sql;
create test as select * from test2 where user_name = &username;quit;
当我在SAS中使用%let username=Bob运行时,它运行正常。但是我需要使用存储的进程来运行它(变量用户名是连接用户中的内部参数,我从存储的进程代码中删除%let username=Bob )。存储过程制动器有错误。
在日志文件中,我看到变量:
_username=Bob,但是存储过程中的代码找不到它。如何在SAS存储的过程代码中使用此变量?谢谢!
我想把宏存储在目录中。这样做可以让许多宏只与单个文件共享,并引入与用户的某种程度的分离。
要存储宏,我运行一个程序,如
/* HelloWorld.sas */
libname pwd "."; /* assign current directory */
option mstored sasmstore=pwd; /* set pwd as storage directory */
%macro HelloWorld()
/ store source; /* store compiled macro along wi
我在SAS中使用模板和sgrender来创建基于不同类变量的热图。我希望每次输出都根据class变量将标题更新为class变量的值。到目前为止,我的代码是这样的(如果我告诉它,它会打印一个字符串标题,但我不能让它根据变量的不同而变化):
proc template;
define statgraph heatmapparm;
begingraph;
entrytitle 'INSERT TITLE HERE'; *Update title here based on classVar;
layout overlay;
我正在尝试在我公司的SAS服务器上使用SAS宏语言。其余的(SAS-base)代码可以正常工作,但是宏不能。即使是一个简单的%let也会导致错误(这是程序中的第一行):
5789 %let pgm = XXX ;
-
180
ERROR 180-322: Statement is not valid or it is used out of proper order
我已经检查了tools下的系统选项,‘宏’选项被设置为1。
有人知道如何让宏正常工作吗?
谢谢:)
是否可以读取(并执行)存储在SAS数据集中的字符串中的SAS代码。
例如,数据集'CODE‘包含一个字符串变量,该变量包含
"IF TOTAL_SALES GE 20000 AND TYPE IN ('A', 'B', 'C') THEN VAR1 = 'Y' ;"
我能做像这样的事情吗?
data sales ;
set sales ;
/* run the if statement above */
run ;
使用SAS 9.2
我在SAS中多次运行宏,如下所示:
%mymac(a,b);
%mymac(a,c);
.
%mymac(a,a)
%mymac(a,w);
.
我的程序/宏类似于:
/* begin program here */
data original_data;
set mylib.mydata;
run;
%macro mymac(x,y);
data mydata1;
set original_data;
where school_district="&x";
run;
proc means data=mydata1;
var income;
run;
%men
我正在使用SAS企业指南,并希望将一个小的计算结果存储在一个SAS宏变量中:
我的代码如下:
%do quarter = 0 to 3;
%let macro_variable = &quarter. * 3;
%end;
但是,这会导致代码中出现以下错误:
Statement is not valid, or it is used out of the proper order. Affected code: 0*3.
我在这里做错什么了?这似乎是一个如此简单的操作。