<?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: Add consecutive numbers in between of the dataset in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546852#M151484</link>
    <description>&lt;P&gt;just one modification to this.&lt;/P&gt;&lt;P&gt;The firt observation can be changed, it is not constant. that is if 168 is not the first observation, the first observation is missed, that was actually 167.&amp;nbsp;&lt;/P&gt;&lt;P&gt;that number can be found out and stored in a macro or in some other way, that is possible.(may be that is the min of the whole table etc..)&lt;/P&gt;&lt;P&gt;THen how can we modify this?&lt;/P&gt;</description>
    <pubDate>Thu, 28 Mar 2019 11:38:46 GMT</pubDate>
    <dc:creator>chithra</dc:creator>
    <dc:date>2019-03-28T11:38:46Z</dc:date>
    <item>
      <title>Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546822#M151471</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am having a data set like below :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;scn&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;168&lt;/TD&gt;&lt;TD&gt;100000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;171&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;171&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;172&lt;/TD&gt;&lt;TD&gt;100003&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;179&lt;/TD&gt;&lt;TD&gt;100004&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;180&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;168&lt;/TD&gt;&lt;TD&gt;100006&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;172&lt;/TD&gt;&lt;TD&gt;100008&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The columns id,scn and year is sorted in ascending order, i mean all are group by.&lt;/P&gt;&lt;P&gt;year column should be consecutive numbers, but here some year are missing, I need to add consecutive numbers in between with value as 0.&lt;/P&gt;&lt;P&gt;i need to do this in data step becuase it is very huge data, multiple steps will cause performance issue.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The output should lokks like :&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;scn&lt;/TD&gt;&lt;TD&gt;year&lt;/TD&gt;&lt;TD&gt;value&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;168&lt;/TD&gt;&lt;TD&gt;100000&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;111111&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;170&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;171&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;171&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;172&lt;/TD&gt;&lt;TD&gt;100003&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;173&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;174&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;175&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;176&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;177&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;1&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;178&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;179&lt;/TD&gt;&lt;TD&gt;100004&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;180&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;168&lt;/TD&gt;&lt;TD&gt;100006&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;169&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;170&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;89&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;2&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;171&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;89&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;172&lt;/TD&gt;&lt;TD&gt;100008&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in Advance,&lt;/P&gt;&lt;P&gt;Chithra&lt;/P&gt;</description>
      <pubDate>Thu, 28 Mar 2019 08:45:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546822#M151471</guid>
      <dc:creator>chithra</dc:creator>
      <dc:date>2019-03-28T08:45:52Z</dc:date>
    </item>
    <item>
      <title>Re: Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546832#M151475</link>
      <description>&lt;P&gt;Create a "look-ahead":&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines dlm='09'x dsd;
input id $ scn year value;
datalines;
89	1	168	100000
89	1	169	0
89	1	169	111111
89	1	171	0
89	1	171	0
89	1	172	100003
89	1	179	100004
89	1	180	0
89	2	168	100006
89	2	169	0
89	2	172	100008
;
run;

data want;
merge
  have
  have (
    firstobs=2
    keep=id scn year
    rename=(
      id=n_id
      scn=n_scn
      year=n_year
    )
  )
;
output;
if n_id = id and n_scn = scn
then do year = year + 1 to n_year - 1;
  value = 0;
  output;
end;
drop n_:;
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;id    scn    year     value

89     1      168    100000
89     1      169         0
89     1      169    111111
89     1      170         0
89     1      171         0
89     1      171         0
89     1      172    100003
89     1      173         0
89     1      174         0
89     1      175         0
89     1      176         0
89     1      177         0
89     1      178         0
89     1      179    100004
89     1      180         0
89     2      168    100006
89     2      169         0
89     2      170         0
89     2      171         0
89     2      172    100008
&lt;/PRE&gt;
&lt;P&gt;Note how I presented your example data in a data step with datalines, so it is easy for others to recreate the dataset. Please do so in the future; help us to help you.&lt;/P&gt;</description>
      <pubDate>Thu, 28 Mar 2019 09:33:19 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546832#M151475</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-03-28T09:33:19Z</dc:date>
    </item>
    <item>
      <title>Re: Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546839#M151479</link>
      <description>&lt;P&gt;Many thanks.&lt;/P&gt;&lt;P&gt;This is working&lt;/P&gt;</description>
      <pubDate>Thu, 28 Mar 2019 09:59:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546839#M151479</guid>
      <dc:creator>chithra</dc:creator>
      <dc:date>2019-03-28T09:59:36Z</dc:date>
    </item>
    <item>
      <title>Re: Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546841#M151480</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/54638"&gt;@chithra&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here is a slightly different way of doing just the same as Kurtbremser's code. It uses the point= option instead of firstobs=2. It is in no way better, I just post it because I want to promote use of the point= option, because it is so useful for look-ahead and -back, also in more complicated cases.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop= lastyear nextyear i); 
	set have; by id scn;
	nextrec = _N_ + 1;
	lastyear = year;
	output;
	if not last.scn then do;
		set have (keep=year rename=(year=nextyear)) point=nextrec;
		do i = lastyear + 1 to nextyear - 1;
			year = i;
			value = 0;
			output;
		end;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Mar 2019 10:24:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546841#M151480</guid>
      <dc:creator>ErikLund_Jensen</dc:creator>
      <dc:date>2019-03-28T10:24:38Z</dc:date>
    </item>
    <item>
      <title>Re: Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546852#M151484</link>
      <description>&lt;P&gt;just one modification to this.&lt;/P&gt;&lt;P&gt;The firt observation can be changed, it is not constant. that is if 168 is not the first observation, the first observation is missed, that was actually 167.&amp;nbsp;&lt;/P&gt;&lt;P&gt;that number can be found out and stored in a macro or in some other way, that is possible.(may be that is the min of the whole table etc..)&lt;/P&gt;&lt;P&gt;THen how can we modify this?&lt;/P&gt;</description>
      <pubDate>Thu, 28 Mar 2019 11:38:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546852#M151484</guid>
      <dc:creator>chithra</dc:creator>
      <dc:date>2019-03-28T11:38:46Z</dc:date>
    </item>
    <item>
      <title>Re: Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546859#M151487</link>
      <description>&lt;P&gt;In that case, you're better of using &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12887"&gt;@ErikLund_Jensen&lt;/a&gt; 's method of lookahead, as it already uses by-processing:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let start=167;

data want (drop=_year _value nextyear); 
  set have;
  by id scn;
  nextrec = _N_ + 1;
  if first.scn then do;
    _year = year;
    _value = value;
    do year = &amp;amp;start to year - 1;
      value = 0;
      output;
    end;
    value = _value;
    year = _year;
  end;
  output;
  if not last.scn then do;
    set have (keep=year rename=(year=nextyear)) point=nextrec;
    do year = year + 1 to nextyear - 1;
      value = 0;
      output;
    end;
  end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 28 Mar 2019 11:59:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/546859#M151487</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2019-03-28T11:59:05Z</dc:date>
    </item>
    <item>
      <title>Re: Add consecutive numbers in between of the dataset</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/547180#M151578</link>
      <description>&lt;P&gt;Thank you&lt;/P&gt;</description>
      <pubDate>Fri, 29 Mar 2019 13:20:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Add-consecutive-numbers-in-between-of-the-dataset/m-p/547180#M151578</guid>
      <dc:creator>chithra</dc:creator>
      <dc:date>2019-03-29T13:20:11Z</dc:date>
    </item>
  </channel>
</rss>

