SAS:创建可以回顾 x 个月的参数

Posted

技术标签:

【中文标题】SAS:创建可以回顾 x 个月的参数【英文标题】:SAS: create parameter that can look x months back 【发布时间】:2022-01-20 10:14:00 【问题描述】:

我一直在寻找一种方法来创建一个变量,该变量可以让我运行一个 proc sql 选择一个特定 10 个月回顾的表。参数格式应为 YYYYMM。

例如&YYYYMM = 202102 这将允许我从 202005 到 202101 运行 proc sql select 数据。

非常感谢任何帮助! 非常感谢!!

【问题讨论】:

你试过了吗?这是一个想法——您可以使用 yyyymm 宏变量创建日期并将其存储在另一个宏变量中。使用第二个变量并使用intnx() 减去 10 个月。快速提示 - 所有这些都可以在宏中完成...见%sysfunc() 我已经尝试创建临时表来执行范围内的几个月,但我想如果一切都可以在宏中完成,那并不是真的有必要。只有我是 sas 的新手,所以我对如何编写宏还不太了解。在代码中详细阐述您的想法的任何帮助我认为在这方面会非常有帮助! 显示你想要生成的代码。如果您不知道要生成什么,则无法编写程序(宏)来生成某些内容。 数据months_in_scope;做 i = 1 到 10; NR = 我; yyyymm = %sysfunc(intnx(月,%sysfunc(today()),-1),yymmn6);输出;结尾;格式 yyyymm yymmn6.;放下我;跑步;但这并没有导致我想要的 yyyymm。我想看到的 yyyymm 是今天月份的 yyyymm -1 并且可以追溯到 10 个月 【参考方案1】:

我假设如果您输入 202102,那么您想要 01.02.2021 之前的所有日期。请尝试以下操作:

/*Example dataset with dates*/
Data have(drop=x);
date = '01jan2020'd;
do x = 0 to 730;
    date = date + 1;
    output;
end;
Format date date9.;
Run;

/*Your variable in format YYYYMM*/
%Let date = 202102;

/*Convert to your variable SAS date */
Data _null_;
Format date_new date9.;
date_new = input("&date" !! "01",yymmdd8.);
Call symputx('date_new',date_new);
Run;
%put &date_new;

/*Select required date ranges from the have dataset*/
Proc sql;
Create table want as
Select * 
From have
Where intnx('month',&date_new,-10,'S') <= date < &date_new;
Quit;

/*Check results*/
Proc sql;
Select min(date) format=date9.
      ,max(date) format=date9.
From want;
Quit;

【讨论】:

非常感谢谢尔盖!这确实有帮助,但是我想要实现的只是一张表格,其中包含 yyyyymm 的列表,从现在开始可以追溯到 10 个月。所以我们现在在 202112 年,我希望我的表格显示从 202102 年到 202111 年的所有 yyyymm。但我想也许我可以从你的解决方案中即兴发挥,所以再次非常感谢!!!【参考方案2】:

所以您想制作一个数据集,每个日期只有一次观察?您要创建 DATE 变量还是 CHARACTER 变量?或者可能是一个数字变量,将这些数字字符串作为数字而不是实际日期值?

%let end_month=202102;

data want;
  do offset=-9 to -1 ;
    date = intnx('month',input("&end_month",yymmn6.),offset);
    string=put(date,yymmn6.);
    number=input(string,6.);
    output;
  end;
  format date yymmdd10.;
run;

结果:

【讨论】:

以上是关于SAS:创建可以回顾 x 个月的参数的主要内容,如果未能解决你的问题,请参考以下文章

总结总结,回顾回顾

零基础进阶算法工程师之路:《算法笔记》学习:C/C++快速回顾

零基础进阶算法工程师之路:《算法笔记》学习:C/C++快速回顾

零基础进阶算法工程师之路:《算法笔记》学习:C/C++快速回顾

零基础进阶算法工程师之路:《算法笔记》学习:C/C++快速回顾

c基础回顾