<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Week number starting from 1 for any month in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882949#M348873</link>
    <description>&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm fairly new to SAS and need your help with a query. I have a date column in my dataset, which is of 'DATE' type variable and I would like to add a column to the dataset that gives me the week number corresponding to the dates. I can use the week() function but there's slightly a different requirement in my case as I want the week number to start from 1 irrespective of the month that the date starts from. Please note that my date always starts with Monday and may have multiple occurrences of same date. Also, I want the week to start from Monday and end on Sunday, so the week number should be corresponding to it. Below is a sample dataset.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;date_var&lt;/TD&gt;&lt;TD&gt;week_no&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-12&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-12&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-13&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-14&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-15&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-16&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-17&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-18&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-19&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-20&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-21&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-22&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-23&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-24&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-25&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-26&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-27&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-28&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-29&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-30&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-07-01&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-07-02&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried the query below but it doesn't start the week from 1.&lt;/P&gt;&lt;P&gt;data final_table;&lt;/P&gt;&lt;P&gt;set temp_table;&lt;/P&gt;&lt;P&gt;week_no=week(date_var);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 29 Jun 2023 14:57:24 GMT</pubDate>
    <dc:creator>msatl</dc:creator>
    <dc:date>2023-06-29T14:57:24Z</dc:date>
    <item>
      <title>Week number starting from 1 for any month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882949#M348873</link>
      <description>&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm fairly new to SAS and need your help with a query. I have a date column in my dataset, which is of 'DATE' type variable and I would like to add a column to the dataset that gives me the week number corresponding to the dates. I can use the week() function but there's slightly a different requirement in my case as I want the week number to start from 1 irrespective of the month that the date starts from. Please note that my date always starts with Monday and may have multiple occurrences of same date. Also, I want the week to start from Monday and end on Sunday, so the week number should be corresponding to it. Below is a sample dataset.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;date_var&lt;/TD&gt;&lt;TD&gt;week_no&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-12&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-12&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-13&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-14&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-15&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-16&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-17&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-18&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-19&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-20&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-21&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-22&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-23&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-24&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-25&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-26&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-27&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-28&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-29&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-06-30&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-07-01&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2023-07-02&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried the query below but it doesn't start the week from 1.&lt;/P&gt;&lt;P&gt;data final_table;&lt;/P&gt;&lt;P&gt;set temp_table;&lt;/P&gt;&lt;P&gt;week_no=week(date_var);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 29 Jun 2023 14:57:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882949#M348873</guid>
      <dc:creator>msatl</dc:creator>
      <dc:date>2023-06-29T14:57:24Z</dc:date>
    </item>
    <item>
      <title>Re: Week number starting from 1 for any month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882951#M348875</link>
      <description>Will week ever be past 5? Does the count ever reset? &lt;BR /&gt;&lt;BR /&gt;If not use the first date as your start_date and and then use math functions to get the week. If you want to adjust the first for mondays, etc use INTNX with the WEEK and interval parameters to set it up.&lt;BR /&gt;&lt;BR /&gt;data final_table;&lt;BR /&gt;set temp_table;&lt;BR /&gt;retain start_date;&lt;BR /&gt;if _n_ = 1 then start_date = date_var;&lt;BR /&gt;&lt;BR /&gt;week = floor((date_var-start_date)/7)+1;&lt;BR /&gt;run;</description>
      <pubDate>Thu, 29 Jun 2023 15:06:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882951#M348875</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2023-06-29T15:06:14Z</dc:date>
    </item>
    <item>
      <title>Re: Week number starting from 1 for any month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882953#M348877</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    input date :yymmdd10.;
    format date yymmdd10.;
    cards;
2023-06-12	
2023-06-12	
2023-06-13	
2023-06-14	
2023-06-15	
2023-06-16	
2023-06-17	
2023-06-18	
2023-06-19	
2023-06-20	
2023-06-21	
2023-06-22	
2023-06-23	
2023-06-24	
2023-06-25	
2023-06-26	
2023-06-27	
2023-06-28	
2023-06-29	
2023-06-30	
2023-07-01	
2023-07-02	
;

data want;
    set have;
    retain first_day;
    if _n_=1 then first_day=date;
    week_no=1+floor((date-first_day+1)/7);
    if weekday(date)=1 then week_no=week_no-1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Explanation: from the first day of the data set (which has to be a Monday, you said), weeks can be found by finding the number of days elapsed and then dividing by 7 and rounding down to an integer. The exception is when the date is Sunday, we subtract 1 from the week number to get the corrected week number.&lt;/P&gt;</description>
      <pubDate>Thu, 29 Jun 2023 15:08:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882953#M348877</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2023-06-29T15:08:54Z</dc:date>
    </item>
    <item>
      <title>Re: Week number starting from 1 for any month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882954#M348878</link>
      <description>&lt;P&gt;Do you just want to count how many weeks since the first date value?&lt;/P&gt;
&lt;P&gt;That generates the same numbers as your WEEK_NO variable.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input date_var :yymmdd. week_no ;
  format date_var yymmdd10.;
cards;
2023-06-12 1
2023-06-12 1
2023-06-13 1
2023-06-14 1
2023-06-15 1
2023-06-16 1
2023-06-17 1
2023-06-18 1
2023-06-19 2
2023-06-20 2
2023-06-21 2
2023-06-22 2
2023-06-23 2
2023-06-24 2
2023-06-25 2
2023-06-26 3
2023-06-27 3
2023-06-28 3
2023-06-29 3
2023-06-30 3
2023-07-01 3
2023-07-02 3
;

data want;
  set have;
  if _n_=1 then start_date=date_var;
  retain start_date ;
  format start_date yymmdd10.;
  want = 1 + int( (date_var-start_date)/7 );
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 29 Jun 2023 15:09:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882954#M348878</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2023-06-29T15:09:15Z</dc:date>
    </item>
    <item>
      <title>Re: Week number starting from 1 for any month</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882960#M348882</link>
      <description>&lt;P&gt;Given your problem description, I guess you want the earliest DATE in a dataset to be assigned to week 1, correct?&amp;nbsp; &amp;nbsp; Then&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input date_var  yymmdd12. 	desired_week_no;
  format date_var  date. ;
datalines;
2023-06-12	1
2023-06-12	1
2023-06-13	1
2023-06-14	1
2023-06-15	1
2023-06-16	1
2023-06-17	1
2023-06-18	1
2023-06-19	2
2023-06-20	2
2023-06-21	2
2023-06-22	2
2023-06-23	2
2023-06-24	2
2023-06-25	2
2023-06-26	3
2023-06-27	3
2023-06-28	3
2023-06-29	3
2023-06-30	3
2023-07-01	3
2023-07-02	3
run;


data want (drop=_:);
  set have;
  if _n_=1 then set have (keep=date_var rename=(date_var=_original_date_var));
  week_num=1+intck('week.2',_original_date_var,date_var);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The 'week.2' time interval is a week that begins on Mondays, which I understand is your definition of a week.&lt;/P&gt;</description>
      <pubDate>Thu, 29 Jun 2023 15:24:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Week-number-starting-from-1-for-any-month/m-p/882960#M348882</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2023-06-29T15:24:14Z</dc:date>
    </item>
  </channel>
</rss>

