将 SAS 数据集中的数据分配给变量(SAS E 指南 5.1)
Assigning data from SAS data set to variable (SAS E Guide 5.1)
我使用 SAS 执行查询,有时之后会向我的团队发送电子邮件以确认查询已执行。但是,除非我手动检查,否则我永远不知道它是否成功。
例如,我有一个 SAS 作业,它执行一个存储过程,该过程在 table 后附加了今天的更多数据。我希望能够将 table 中的 MAX(date) 添加到电子邮件文本中,或者将日期为今天的 COUNT(*) 添加到电子邮件中,这样我就可以知道添加了多少条记录。
这是我想象中的样子:
PROC SQL;
CREATE TABLE sasData AS
SELECT
COUNT(*) AS myRecordCount
FROM
tableName
;QUIT;
%LET newVariable = sasData.myRecordCount;
所以,我知道上面不是它的工作原理,但它是想法。
谁能告诉我如何正确地做到这一点?谢谢!
您可以使用下面的方法将结果直接存储在宏变量中:
PROC SQL NOPRINT;
SELECT
count(*) INTO:myRecordCount
FROM tableName;
QUIT;
另外,您还可以通过使用 SEPARATED BY 指定分隔符将值列表存储到宏变量中。
如果您正在使用 SQL,您可以在自动宏变量 SQLOBS 中获取由前一个 SQL 语句处理的观察计数。将它保存到另一个宏变量,因为它将在下一个 SQL 语句运行时被覆盖。
proc sql ;
create table class as select * from sashelp.class ;
%let nobs=&sqlobs ;
insert into class select * from sashelp.class where name like 'A%' ;
%let nobs2=&sqlobs ;
%put &=nobs &=nobs2 ;
NOBS=19 NOBS2=2
您可以使用 INTO 子句创建宏变量。
select count(*)
, max(age)
into :nobs3 trimmed
, :max_age trimmed
from sashelp.class
;
我使用 SAS 执行查询,有时之后会向我的团队发送电子邮件以确认查询已执行。但是,除非我手动检查,否则我永远不知道它是否成功。
例如,我有一个 SAS 作业,它执行一个存储过程,该过程在 table 后附加了今天的更多数据。我希望能够将 table 中的 MAX(date) 添加到电子邮件文本中,或者将日期为今天的 COUNT(*) 添加到电子邮件中,这样我就可以知道添加了多少条记录。
这是我想象中的样子:
PROC SQL;
CREATE TABLE sasData AS
SELECT
COUNT(*) AS myRecordCount
FROM
tableName
;QUIT;
%LET newVariable = sasData.myRecordCount;
所以,我知道上面不是它的工作原理,但它是想法。
谁能告诉我如何正确地做到这一点?谢谢!
您可以使用下面的方法将结果直接存储在宏变量中:
PROC SQL NOPRINT;
SELECT
count(*) INTO:myRecordCount
FROM tableName;
QUIT;
另外,您还可以通过使用 SEPARATED BY 指定分隔符将值列表存储到宏变量中。
如果您正在使用 SQL,您可以在自动宏变量 SQLOBS 中获取由前一个 SQL 语句处理的观察计数。将它保存到另一个宏变量,因为它将在下一个 SQL 语句运行时被覆盖。
proc sql ;
create table class as select * from sashelp.class ;
%let nobs=&sqlobs ;
insert into class select * from sashelp.class where name like 'A%' ;
%let nobs2=&sqlobs ;
%put &=nobs &=nobs2 ;
NOBS=19 NOBS2=2
您可以使用 INTO 子句创建宏变量。
select count(*)
, max(age)
into :nobs3 trimmed
, :max_age trimmed
from sashelp.class
;