将SAS日期转换为上周五结束的一年中的星期日

将SAS日期转换为上周五结束的一年中的星期日,sas,Sas,我试图操纵我的配药日期,给我一个截止到上周五的一年中每个日期的周数,这能做到吗?这是我到目前为止所拥有的 %let 1= 01012016; %let 53 = 12302016; **01 import whiteoak file; proc import datafile = "E:\Horizon\Adhoc\AH\whiteoak.xlsx" out = whiteoak dbms = XLSX replace; run; ** 02 remove d

我试图操纵我的配药日期,给我一个截止到上周五的一年中每个日期的周数,这能做到吗?这是我到目前为止所拥有的

%let 1= 01012016;
%let 53 = 12302016;

**01 import whiteoak file;
proc import
    datafile = "E:\Horizon\Adhoc\AH\whiteoak.xlsx"
    out = whiteoak
    dbms = XLSX
    replace;
run;

** 02 remove dupes to ensure unique rx and fill;
proc sort nodup data=whiteoak;
by Rx_ Refill;
run;

** 03 Filter out holds;
data whiteoak;
set whiteoak;
where (Filled_Status="YES");
run;

** 04 create weekday variable;
data dates;
set whiteoak;
format Dispensing_Date MMDDYY8.;
run;

这是我对你所问问题的最好猜测

24         data _null_;
25            x = today();
26            d = intnx('week.7',x,-1,'end');
27            put (_all_)(=weekdate.);
28            run;

x=Wednesday, January 4, 2017 d=Friday, December 30, 2016

这是你想要的吗

data weeks;
  do date = '22DEC2016'd to '15JAN2017'd;
    format date first_friday weekdate.;
    sas_week=week(date);
    first_friday= intnx('week.7',intnx('year',date,0,'b'),0,'e');
    friday_week=1+int((7+date-first_friday)/7) ;
    output;
  end;
run;
如果确实如此,则将其应用于您的数据:

data dates;
  set whiteoak;
  week = 1 + int((7+Dispensing_Date
       - intnx('week.7',intnx('year',Dispensing_Date,0,'b'),0,'e'))/7);
run;

您能提供并举例使用数据吗?这是我的数据…我需要将分发日期转换为周数,并将其添加到whiteoak数据集或新数据集,我可以使用week(分发日期,'w');在什么地方?我可以从我的whiteoak表中的Districing_date创建一个工作日变量吗?我要求您展示您拥有的和想要的示例。如果disp date是今天,那么您期望的日期是什么(答案)?请发布一些示例日期以及这些日期所需的周值。在WEEK()函数不返回所需结果的地方选择几个。另外,您确定日期变量实际上是一个日期,而不仅仅是一个像11252015这样的数字,看起来像是一个有效的mmddyyyy值吗?现在我如何将它合并到我的whiteoak表中,以便创建一个名为“weeknum”的新列,从而从日期列中提取一年的weeknumber?请使用中的函数行D=并将其移动到数据步骤或将其包含在新的数据集中。X是日期,因此更改以引用该日期。查看INTNX的文档,确保它是您想要的,参数是什么。是的!!!现在有没有一种方法可以将它合并到我的名为whiteoak的数据集中,这样我就可以提取某一周的其他数据,这些数据与我的日期一致?