我是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;
答案 0 :(得分:0)
这在很大程度上取决于您希望如何定义周数。如果这个月的第一个月是星期三,那个星期是几周?那个星期是一周,还是零周?它通常可以指任何一种方式。
如果你想要一个,那么周四/周五/周六是第1周,那么第4周是第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;