Date 标记一个月内的整周,包括其他月份的剩余天数
我有一个包含每日数据的数据集。我需要创建一个变量,它将每个月的周数(1到(4或5)) 我通过以下公式得出了这一结论:Date 标记一个月内的整周,包括其他月份的剩余天数,date,sas,week-number,Date,Sas,Week Number,我有一个包含每日数据的数据集。我需要创建一个变量,它将每个月的周数(1到(4或5)) 我通过以下公式得出了这一结论: WK_NUM = intck('week',intnx('month',DATE,0),DATE)+1; 它工作正常,但通常一个月的第一周和最后一周都不是完整的几周,因此该行只带来部分周。我需要改进它,将上个月或下个月的剩余天数增加到每周7天 有什么想法吗?希望这能产生预期的结果: /* initial data set with dates */ data a; for
WK_NUM = intck('week',intnx('month',DATE,0),DATE)+1;
它工作正常,但通常一个月的第一周和最后一周都不是完整的几周,因此该行只带来部分周。我需要改进它,将上个月或下个月的剩余天数增加到每周7天
有什么想法吗?希望这能产生预期的结果:
/* initial data set with dates */
data a;
format date date9.;
do date="15apr2017"d to "15jun2017"d;
output;
end;
run;
/* adding week number */
data a;
set a;
wk_num = week(date,'u');
run;
/* selecting May and modifying wk_num */
proc sql noprint;
CREATE TABLE b AS
SELECT date
,wk_num - ((SELECT min(wk_num) FROM a WHERE date="01may2017"d)-1)
FROM a
WHERE wk_num between (SELECT min(wk_num) FROM a WHERE date="01may2017"d) AND (SELECT max(wk_num) FROM a WHERE date="31may2017"d)
;
quit;
周功能选项:
u(默认值):指定一年中的周数。星期天被认为是一周的第一天。周值的数字表示为0-53范围内的十进制数。第53周没有特殊意义。本周('2006年12月31日,'u')的价值为53
v:指定其值表示为1-53范围内十进制数的周数。星期一被认为是一周的第一天,一年中的第一周是一周,包括一年中的1月4日和第一个星期四。如果1月的第一个星期一是第2、第3或第4天,则前几天是前一年最后一周的一部分
w:指定一年中的周数。星期一被认为是一周的第一天。周值的数字表示为0-53范围内的十进制数。第53周没有特殊意义。week('2006年12月31日,'w')的值为53。能否显示您开始的内容以及您需要的输出内容?我的数据库涵盖1月15日到今天。让我们以2017年5月为例。每个日期都有多行数据,字段日期包含完整日期(5月1日至5月31日)。我想创建一个名为WK_NUM的变量,它将这些天按周分组(从第1天到第5天)。我目前的配方奶粉可以做到这一点,但我的第一周是5月1日至5月06日(6天),最后一周是5月28日至5月31日(4天)。在这些情况下,我希望ordem从上个月/下个月获得更多的天数,以填满一周7天(从周日到周六),如4月30日至5月06日(第一周)和5月28日至6月03日(上周)。请将该文本添加到问题中。或者更好的是,添加到问题中,以显示您拥有的数据的一些示例记录,并显示您希望从该示例中获得的输出数据。@AYJK如前所述,请将此添加到问题中。还包括当你展望下个月时你是如何处理的?那么6月1日将是第5周?您是否尝试过WEEK函数/格式的变体?谢谢@zuluk,它就像我想要的那样工作!干杯