<?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 Re: break SCD2 values into single years in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/431071#M106580</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
format ID $2. VAR1 $4. VAR2 8.;
format VALID_FROM VALID_TO  Date9.;
input 	@1  ID  
		@3	VAR1  
		@8  VAR2  
		@10 VALID_FROM 
		@16 VALID_TO
;
datalines;
AB xxxx 1 17828 19272
run;

data want;
set have;
by id;
_VALID_TO=VALID_TO;
_year=year(VALID_TO)-year(VALID_from);
do _n=year(VALID_from) to year(_VALID_TO);
	if _n=year(VALID_from) then VALID_TO=intnx('year',VALID_from,0,'end');
	else if year(VALID_from)&amp;lt;_n&amp;lt;year(_VALID_TO) then do; VALID_from=mdy(1,1,_n);VALID_TO=intnx('year',mdy(1,1,_n),0,'end');end;
	else if _n=year(_VALID_TO) then do;VALID_from=mdy(1,1,_n);VALID_TO=_VALID_TO;end;
	output;
end;
format _VALID_TO date9.;
drop _:;
run;
	&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 25 Jan 2018 20:06:21 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2018-01-25T20:06:21Z</dc:date>
    <item>
      <title>break SCD2 values into single years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/431056#M106576</link>
      <description>&lt;P&gt;Hi Everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;can anybody help me with this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
format ID $2. VAR1 $4. VAR2 8.;
format VALID_FROM VALID_TO  Date9.;
input     @1  ID  
        @3    VAR1  
        @8  VAR2  
        @10 VALID_FROM 
        @16 VALID_TO
;
datalines;
AB xxxx 1 17828 19272
;
run;


data WANT;
format ID $2. VAR1 $4. VAR2 8.;
format VALID_FROM VALID_TO  Date9.;
input     @1  ID  
        @3    VAR1  
        @8  VAR2  
        @10 VALID_FROM 
        @16 VALID_TO
;
datalines;
AB xxxx 1 17828 17897
AB xxxx 1 17898 18262
AB xxxx 1 18263 18627
AB xxxx 1 18628 18992
AB xxxx 1 18993 19272

;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to have as much observations as are years in between the valid_from and valid_to date and simultaneously retain the values for the variables ID, VAR1, VAR2.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I program this in SAS BASE?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;FK1&lt;/P&gt;</description>
      <pubDate>Thu, 25 Jan 2018 19:48:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/431056#M106576</guid>
      <dc:creator>FK1</dc:creator>
      <dc:date>2018-01-25T19:48:16Z</dc:date>
    </item>
    <item>
      <title>Re: break SCD2 values into single years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/431071#M106580</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data HAVE;
format ID $2. VAR1 $4. VAR2 8.;
format VALID_FROM VALID_TO  Date9.;
input 	@1  ID  
		@3	VAR1  
		@8  VAR2  
		@10 VALID_FROM 
		@16 VALID_TO
;
datalines;
AB xxxx 1 17828 19272
run;

data want;
set have;
by id;
_VALID_TO=VALID_TO;
_year=year(VALID_TO)-year(VALID_from);
do _n=year(VALID_from) to year(_VALID_TO);
	if _n=year(VALID_from) then VALID_TO=intnx('year',VALID_from,0,'end');
	else if year(VALID_from)&amp;lt;_n&amp;lt;year(_VALID_TO) then do; VALID_from=mdy(1,1,_n);VALID_TO=intnx('year',mdy(1,1,_n),0,'end');end;
	else if _n=year(_VALID_TO) then do;VALID_from=mdy(1,1,_n);VALID_TO=_VALID_TO;end;
	output;
end;
format _VALID_TO date9.;
drop _:;
run;
	&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 25 Jan 2018 20:06:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/431071#M106580</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-01-25T20:06:21Z</dc:date>
    </item>
    <item>
      <title>Re: break SCD2 values into single years</title>
      <link>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/432626#M107168</link>
      <description>Thanks, novinosrin! It works perfectly fine.</description>
      <pubDate>Wed, 31 Jan 2018 07:32:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/break-SCD2-values-into-single-years/m-p/432626#M107168</guid>
      <dc:creator>FK1</dc:creator>
      <dc:date>2018-01-31T07:32:34Z</dc:date>
    </item>
  </channel>
</rss>

