【问题标题】:SAS Get week number for each monthSAS获取每个月的周数
【发布时间】:2014-05-23 23:36:06
【问题描述】:

我是 SAS 新手,一直在尝试弄清楚如何获取每个月的周数。我有一个问题,他们不是在一周开始时开始的月份。例如,如果我有一个月份,该月 1 日的数据落在星期四,它将将该月的 1 日和 2 日显示为第 0 周。有没有办法将这些周显示为第 1 周?我尝试了不同的方法,但都没有成功。

DATA getweek;
set test; 
if year(rundt) ne year(today())then delete;
   month = month(rundt); 
   week1=intck('week',intnx('month',rundt,0),rundt);
   format rundt MMDDYY8.;     
RUN;

【问题讨论】:

    标签: sas


    【解决方案1】:

    这在很大程度上取决于您要如何定义周数。如果月初是星期三,那一周是哪一周?那是第一周还是零周?它通常可以被称为任何一种方式。

    如果你想要一个,那么周四/周五/周六是第 1 周,那么第 4 周是第 1 周,然后只需在结果中添加 1 - 毕竟它始终会关闭(下降)1。

    data test;
    do rundt=19805 to 19904;
    day_of_month=day(rundt);
    output;
    end;
    format rundt date9.;
    run;
    
    DATA getweek;
    set test; 
    if year(rundt) ne year(today())then delete;
       month = month(rundt); 
       week1=intck('week',intnx('month',rundt,0),rundt)+1;
       format rundt MMDDYY8.;     
    RUN;
    

    现在,如果您希望前 9 天或 10 天是第 1 周,您有一个不同的解决方案(尽管我不建议这样做)。使用min 将其设置为最小1。这意味着您的第一周可能长达 13 天,这是违反直觉的,但如果这是您需要的,那么您就是这样做的。

    DATA getweek;
    set test; 
    if year(rundt) ne year(today())then delete;
       month = month(rundt); 
       week1=min(intck('week',intnx('month',rundt,0),rundt),1);
       format rundt MMDDYY8.;     
    RUN;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      相关资源
      最近更新 更多