<?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 how to delete rows with duplicate data and create new rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314222#M68405</link>
    <description>&lt;P&gt;how do i remove the&amp;nbsp;row having the&amp;nbsp;same data and also create new rows by splitting&lt;BR /&gt;for example:insurance policy data&lt;BR /&gt;Policyno.&amp;nbsp;&amp;nbsp;&amp;nbsp;start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; difference in dates&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10mar2016&amp;nbsp;&amp;nbsp; 09mar2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10mar2016&amp;nbsp;&amp;nbsp; 09mar2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;01apr2016&amp;nbsp;&amp;nbsp; 31jan2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year 10months&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05may2016&amp;nbsp; 04may2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05may2017&amp;nbsp; 04may2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;what i want:&lt;/P&gt;&lt;P&gt;1)remove the field having the same data for eg of policyno. 1.I want only one field with unique data.&lt;BR /&gt;2)the difference should be not more than one year,if so then split the data into 2 rows or 3 rows depending on the difference for eg&lt;BR /&gt;&amp;nbsp;&amp;nbsp; in policy no.2 difference is 1 year 10 months i want it to be split into 2 rows.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;Policyno.&amp;nbsp;&amp;nbsp;&amp;nbsp;start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; difference in dates&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;01apr2016&amp;nbsp;&amp;nbsp; 31mar2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01apr2017&amp;nbsp;&amp;nbsp;31jan2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 months(which is less than 1 year)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;thankyou in advance&lt;/STRONG&gt;&lt;/P&gt;</description>
    <pubDate>Fri, 25 Nov 2016 07:28:49 GMT</pubDate>
    <dc:creator>varun11494</dc:creator>
    <dc:date>2016-11-25T07:28:49Z</dc:date>
    <item>
      <title>how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314222#M68405</link>
      <description>&lt;P&gt;how do i remove the&amp;nbsp;row having the&amp;nbsp;same data and also create new rows by splitting&lt;BR /&gt;for example:insurance policy data&lt;BR /&gt;Policyno.&amp;nbsp;&amp;nbsp;&amp;nbsp;start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; difference in dates&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;10mar2016&amp;nbsp;&amp;nbsp; 09mar2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10mar2016&amp;nbsp;&amp;nbsp; 09mar2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;01apr2016&amp;nbsp;&amp;nbsp; 31jan2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year 10months&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05may2016&amp;nbsp; 04may2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 05may2017&amp;nbsp; 04may2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1 year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;what i want:&lt;/P&gt;&lt;P&gt;1)remove the field having the same data for eg of policyno. 1.I want only one field with unique data.&lt;BR /&gt;2)the difference should be not more than one year,if so then split the data into 2 rows or 3 rows depending on the difference for eg&lt;BR /&gt;&amp;nbsp;&amp;nbsp; in policy no.2 difference is 1 year 10 months i want it to be split into 2 rows.&lt;BR /&gt;&amp;nbsp;&amp;nbsp;Policyno.&amp;nbsp;&amp;nbsp;&amp;nbsp;start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; difference in dates&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;01apr2016&amp;nbsp;&amp;nbsp; 31mar2017&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1year&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 01apr2017&amp;nbsp;&amp;nbsp;31jan2018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 months(which is less than 1 year)&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;thankyou in advance&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 07:28:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314222#M68405</guid>
      <dc:creator>varun11494</dc:creator>
      <dc:date>2016-11-25T07:28:49Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314227#M68407</link>
      <description>&lt;P&gt;What if there were, say 3 years and 4 months between the two dates? &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Would you then want 1 row saying 3years and 1 row saying 4months or 3 rows saying 1year and 1 saying 4 months?&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 07:42:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314227#M68407</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2016-11-25T07:42:40Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314230#M68408</link>
      <description>&lt;P&gt;And how do you define the 1 year between the two dates? Because if you use the YRDIF function which I would usually do in this situation, the difference between the 10mar2016 and 09mar2017 is barely 1 year. See below &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Policyno start_date :date9. end_date :date9.;
format start_date end_date date9.;
datalines;
1 10mar2016 09mar2017
1 10mar2016 09mar2017
2 01apr2016 31jan2018
3 05may2016 04may2017
3 05may2017 04may2018
;

data test;
   set have;
   difference_in_years = yrdif(start_date, end_date);
run;

proc print data = test;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 25 Nov 2016 07:57:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314230#M68408</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2016-11-25T07:57:55Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314231#M68409</link>
      <description>4 entries&lt;BR /&gt;With 3 entries of 1 year each and the last entry of the remaining 4 months&lt;BR /&gt;&lt;BR /&gt;Basically the difference of dates should not be greater than 1 year and at&lt;BR /&gt;the same time should be unique. Like in this case if policy starts on&lt;BR /&gt;1apr2010 to 31july13 i.e 3 years and 4 months. I Want it to be shown like&lt;BR /&gt;Policyno. Start date end date diff&lt;BR /&gt;X 01apr2010 31mar2011 1year&lt;BR /&gt;X 01apr2011 31mar2012 1year&lt;BR /&gt;X 01apr2012 31mar2013 1year&lt;BR /&gt;X 01apr2013 31july2013 4m&lt;BR /&gt;&lt;BR /&gt;##- Please type your reply above this line. Simple formatting, no&lt;BR /&gt;attachments. -##</description>
      <pubDate>Fri, 25 Nov 2016 08:04:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314231#M68409</guid>
      <dc:creator>varun11494</dc:creator>
      <dc:date>2016-11-25T08:04:09Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314233#M68410</link>
      <description>&lt;P&gt;For 1) PROC SORT w NODUPKEY should do the trick.&lt;/P&gt;
&lt;P&gt;For 2), use IF to test the values of your start/end variables, and conditionally do explicit OUTPUT, and assign new values to start/end.&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 08:15:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314233#M68410</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2016-11-25T08:15:52Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314258#M68419</link>
      <description>&lt;P&gt;THANKYOU FOR YOUR TIME.&lt;BR /&gt;I SOLVED THE FIRST PROBLEM BUT COULD YOU HELP ME WITH THE SECOND BY TAKING POLICYNO. 2 AS EXAMPLE.&lt;BR /&gt;HOW TO SPLIT IT INTO DUPLICATE ENTRIES WITH DIFFERENT START DATE WITH MAXIMUM GAP OF ONE YEAR&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 10:05:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314258#M68419</guid>
      <dc:creator>varun11494</dc:creator>
      <dc:date>2016-11-25T10:05:07Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314259#M68420</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/116776"&gt;@varun11494﻿&lt;/a&gt;&amp;nbsp;how do you define a years difference? &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 10:10:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314259#M68420</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2016-11-25T10:10:05Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314265#M68422</link>
      <description>&lt;P&gt;thankyou for your time&lt;BR /&gt;364 or 365 days&lt;BR /&gt;suppose policy start date is 03mar2015 so its end date should be 02mar2016 and the remaining&amp;nbsp;days should be in next entries following the same pattern.&lt;BR /&gt;so what i have started is i found out the difference in dates and approximated it to next integer value so if difference is 1.2 or 1.5 or 1.8 years it will show 2 years as&amp;nbsp;difference.from there i want to create duplicate number of rows&amp;nbsp;row matching the difference(approximated to next integer).what i want is just like in this case the difference is 2 so 2 enteries shall create&amp;nbsp;for it.&lt;BR /&gt;if the difference would be 3 so it shall&amp;nbsp;automatically create 3 duplicate entries with shift in dates.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 10:21:56 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314265#M68422</guid>
      <dc:creator>varun11494</dc:creator>
      <dc:date>2016-11-25T10:21:56Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314276#M68424</link>
      <description>&lt;PRE&gt;

data have;
input Policyno   (start_date      end_date) (: date9.) ;
format start_date end_date date9.;
cards;
     1           10mar2016   09mar2017         1year
     1           10mar2016   09mar2017          1year
     2           01apr2016   31jan2018             1year 10months
     3           05may2016  04may2017          1 year
     3           05may2017  04may2018   
;
run;
data temp;
 set have;
 by policyno start_date end_date;
 if first.end_date;
run;
data want;
 set temp;
 yr=yrdif(start_date,end_date);
 _date1=start_date;_date2=end_date;
 do i=1 to int(yr);
  start_date=_date1 ; end_date=intnx('year',_date1,1,'s')-1;
  output;
  _date1=end_date+1;

 end;
 if mod(yr,1) ne 0 then do;
  start_date=_date1;end_date=_date2;
  output;
 end;
 drop _: i yr;
run;


&lt;/PRE&gt;</description>
      <pubDate>Fri, 25 Nov 2016 11:32:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314276#M68424</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-11-25T11:32:34Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314339#M68443</link>
      <description>&lt;P&gt;This is a good problem for using an OUTPUT statement inside a do loop, and also as an example of a do loop defined in this structure:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; do x=1 by 1&amp;nbsp;while (some other condition).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Notes:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;For multiyear policies, the program below constantly adjusts START_DATE and END_DATE until START_DATE exceeds the original end_date (e_date in the program).&lt;/LI&gt;
&lt;LI&gt;This program assumes no policy exceed 10 years ("N=1 to 10").&lt;/LI&gt;
&lt;LI&gt;The intck function uses the "continuous" method argument, which means it counts date "boudaries" based on the first date argument, not on the normal calendar month boundary,&amp;nbsp;nor on a user-specified&amp;nbsp;"boundary-shift" parameter.&amp;nbsp; Great for getting anniveraries.&lt;/LI&gt;
&lt;LI&gt;The CATX function concatenates the 2nd, 3rd, etc arguments, and uses the first argument as a separator.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=e_date n);
  set have;
  by policyno start_date end_date;
  if first.end_date;

  e_date=end_date;
  do N=1 to 10 while (start_date &amp;lt; e_date);
    end_date=min(e_date,intnx('year',start_date,1,'s')-1);
    length date_dif $20;
    date_dif='One Year';
    if end_date&amp;lt;intnx('year',start_date,1,'s')-1 then 
      date_dif=catx(' ',intck('month',start_date,end_date+1,'continuous'),'months');
    output;
    start_date=end_date+1;
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 25 Nov 2016 17:51:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314339#M68443</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-25T17:51:02Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314750#M68598</link>
      <description>&lt;P&gt;Hi&lt;BR /&gt;your coding worked&lt;BR /&gt;&lt;BR /&gt;Can you please explain me step by step how his worked.It would be helpful for me to understand&lt;BR /&gt;datalines..&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;s.no&amp;nbsp;policy no&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;start_date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;04apr2003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;03apr2004&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 32&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;04apr2003&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;03apr2004&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thankyou for your time&lt;/P&gt;</description>
      <pubDate>Mon, 28 Nov 2016 07:20:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314750#M68598</guid>
      <dc:creator>varun11494</dc:creator>
      <dc:date>2016-11-28T07:20:32Z</dc:date>
    </item>
    <item>
      <title>Re: how to delete rows with duplicate data and create new rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314802#M68618</link>
      <description>&lt;P&gt;The begining of the program has&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by&amp;nbsp;policyno start_date end_date;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.end_date;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The BY statement tells SAS to (1) expect the data to be pre-sorted by policyno start_date end_date, and (2) set automatic dummies for each of the by variables indicaiing whether the record in hand is the first record for a given by value (first.policyno, first.start_date, first.end_date) or the last (last.policyno etc.).&amp;nbsp;&amp;nbsp;&amp;nbsp; And what happens to the first. dummies when policyno changes but the dates don't? The treatment of by values is hierarchical, so if a given by var changes setting its first. dummy, all lower order&amp;nbsp;(to the right) first. dummies &amp;nbsp;are also set - no matter what their value sequence is.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The third statement is a subsetting IF (look up&amp;nbsp;sas "subsetting if") which tells sas to keep only records&amp;nbsp;which are&amp;nbsp;the first instance of a given policyno/start_date/end_date combination.&amp;nbsp; As a result the DO group never processes duplicates.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you want an explanation of how the DO group works, take a multiyear policy, run the do group. But inside the do group place a set of PUT statements to see what is happening to N, start_date,&amp;nbsp;end_date, and date_dif:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;e_date&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;end_date&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;STRONG&gt;&lt;SPAN class="token punctuation"&gt;put 'A: ' e_date=yymmddn8.;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; do &lt;SPAN class="token function"&gt;N&lt;/SPAN&gt;&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt; to &lt;SPAN class="token number"&gt;10&lt;/SPAN&gt; while &lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;start_date &lt;SPAN class="token operator"&gt;&amp;lt;&lt;/SPAN&gt; e_date&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;&lt;STRONG&gt;put / 'B: ' N= start_date= end_date=;&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end_date&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;min&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;e_date&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;intnx&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'year'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;start_date&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'s'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;-1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;EM&gt;&lt;STRONG&gt;put &amp;nbsp;'C: '&amp;nbsp; end_date=;&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;length&lt;/SPAN&gt; date_dif &lt;SPAN class="token punctuation"&gt;$&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;20&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; date_dif&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'One Year'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token keyword"&gt;if&lt;/SPAN&gt; end_date&lt;SPAN class="token operator"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;intnx&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'year'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;start_date&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'s'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;-1&lt;/SPAN&gt; &lt;SPAN class="token keyword"&gt;then&lt;/SPAN&gt; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; date_dif&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;catx&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;' '&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token function"&gt;intck&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'month'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;start_date&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;end_date&lt;SPAN class="token operator"&gt;+&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'continuous'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;,&lt;/SPAN&gt;&lt;SPAN class="token string"&gt;'months'&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;EM&gt;&lt;STRONG&gt;put 'D: ' date_dif=;&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; start_date&lt;SPAN class="token operator"&gt;=&lt;/SPAN&gt;end_date&lt;SPAN class="token operator"&gt;+&lt;/SPAN&gt;&lt;SPAN class="token number"&gt;1&lt;/SPAN&gt;&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;EM&gt;&lt;STRONG&gt;put 'E: ' start_date=;&lt;/STRONG&gt;&lt;/EM&gt;&lt;BR /&gt;&amp;nbsp; end&lt;SPAN class="token punctuation"&gt;;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 28 Nov 2016 12:02:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/how-to-delete-rows-with-duplicate-data-and-create-new-rows/m-p/314802#M68618</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2016-11-28T12:02:55Z</dc:date>
    </item>
  </channel>
</rss>

