【问题标题】:SAS - Passing date from one file to another program variableSAS - 将日期从一个文件传递到另一个程序变量
【发布时间】:2014-10-03 23:29:52
【问题描述】:

我正在寻找在 Date9 中传递日期的正确方法。从一个源文件(可能是文本文件)到另一个 sas 程序文件的格式。

在我的 SAS 程序中,我有以下内容:

%MACRO Getdate;
DATA getDate;
infile 'h:\dates.txt';
input @1 date9.;
run;
%MEND Getdate;

文件 dates.txt 的内容是这样的: 2014 年 1 月 28 日

我不确定如何将此日期输出到变量中,以便我可以在另一个宏中使用它来设置某个查询的开始日期和结束日期。

抱歉,我是 SAS 新手,我正在努力尽快学习它,只是想知道如何解决这个问题。

【问题讨论】:

  • 有几种方法可以做到这一点。检查 doco 以获取数据步骤中的 symput 函数。您可能不需要命名数据集,只需使用 data _null_
  • 感谢 sasfrog,我确实查了这些,下面 Reese 的逻辑帮助我解决了问题。尽管如此,仍然非常感谢您的意见:))

标签: date sas


【解决方案1】:

您可以使用调用 symputX 和 Global 选项来确保宏变量在宏之外可用。我想知道为什么你需要一个宏来解决这个问题:)。 您可能还想了解 SAS 如何存储日期,因为它们是应用格式的数字。

%MACRO Getdate;
DATA _null_;
infile 'h:\dates.txt';
input @1 date date9.;
call symputx('date_stored', put(date, date9.), G);
run;
%MEND Getdate;

%getdate;

%put &date_stored.;

编辑:根据您下面的答案/cmets:

%MACRO Getdate;
%let date_stored=0;
DATA _null_;
infile 'h:\dates.txt';
input @1 date date9.;
call symputx('date_stored', put(date, date9.), G);
call symputx('start_date', put(date-45, date9.), G);
call symputx('end_date', put(date-14, date9.), G);
run;


%MEND Getdate;

*CHECK if they exist after macro is run;
%put &date_stored;
%put &start_date;
%put &end_date;

【讨论】:

  • 非常感谢 Reese :))),这绝对对我有用。我能够得到日期并用它做我自己的操作。我给了你的答案绿色检查,因为我仍然没有代表点给你+1
【解决方案2】:

所以用里斯的逻辑,我的答案如下:

%MACRO Getdate;
%let date_stored=0;
DATA _null_;
infile 'h:\dates.txt';
input @1 date date9.;
call symputx('date_stored', put(date, date9.), G);
run;

%put &date_stored;

%let start_date=%SYSFUNC(INTNX(day,"&date_stored"d,-45),date9.);
%let end_date=%SYSFUNC(INTNX(day,"&date_stored"d,-14),date9.);
%put &start_date;
%put &end_date;

%MEND Getdate;
%getdate;

【讨论】:

  • 检查你的变量范围。一旦您的 %getdate 宏运行,&start_date 和 &end_date 是否存在?我不希望它...
  • 您还可以将开始/结束日期计算直接移到数据 null 步骤中以避免宏计算。
  • 感谢 Resse 的提示,我会牢记这一点。既然我有足够的代表点数,我将对您的回答 +1 :) 感谢您的时间和帮助,非常感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-27
  • 2021-05-25
  • 2012-07-14
  • 2023-03-17
  • 2014-07-02
  • 1970-01-01
相关资源
最近更新 更多