<?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 Extracting a year from a variable (in an array) and creating sums in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275435#M7716</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need help with the following code below. I do not think that my year{i} variable is formatted correctly and I cannot figure out why. When I attempt to create a sum for each year and type (type1sum09-12, etc.) I end up with a zero for each year. Any help would be greatly appreciated.&amp;nbsp;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data transpose3;&lt;BR /&gt;set transpose2;&lt;BR /&gt;array type[759];&lt;BR /&gt;array visitdate[759];&lt;BR /&gt;array yearx[759];&lt;BR /&gt;array newdate[759];&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;type1sum09 = 0;&lt;BR /&gt;type1sum10 = 0;&lt;BR /&gt;type1sum11 = 0;&lt;BR /&gt;type1sum12 = 0;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;type2sum09 = 0;&lt;BR /&gt;type2sum10 = 0;&lt;BR /&gt;type2sum11 = 0;&lt;BR /&gt;type2sum12 = 0;&lt;BR /&gt;&lt;BR /&gt;type3sum09 = 0;&lt;BR /&gt;type3sum10 = 0;&lt;BR /&gt;type3sum11 = 0;&lt;BR /&gt;type3sum12 = 0;&lt;BR /&gt;&lt;BR /&gt;type1sum = 0;&lt;BR /&gt;type2sum=0;&lt;BR /&gt;type3sum=0;&lt;BR /&gt;&lt;BR /&gt;/*summing the variables, by type, to get a per person count of each service*/&lt;BR /&gt;do i=1 to 758;&lt;BR /&gt;&lt;BR /&gt;newdate{i}= put(visitdate{i},year4.);&lt;BR /&gt;yearx{i} = input (newdate{i},4.);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2009 then type1sum09 = type1sum09 + 1;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2010 then type1sum10 = type1sum10 + 1;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2011 then type1sum11 = type1sum11 + 1;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2012 then type1sum12 = type1sum12 + 1;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2009 then type2sum09 = type2sum09 + 1;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2010 then type2sum10 = type2sum10 + 1;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2011 then type2sum11 = type2sum11 + 1;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2012 then type2sum12 = type2sum12 + 1;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2009 then type3sum09 = type3sum09 + 1;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2010 then type3sum10 = type3sum10 + 1;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2011 then type3sum11 = type3sum11 + 1;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2012 then type3sum12 = type3sum12 + 1;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 1 then type1sum = type1sum+ 1;&lt;BR /&gt;if type{i} = 2 then type2sum = type2sum+ 1;&lt;BR /&gt;if type{i} = 3 then type3sum = type3sum+ 1;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;end;&lt;BR /&gt;drop i;&lt;BR /&gt;&lt;BR /&gt;keep uidnum type1-type759 type1sum type2sum type3sum type1sum09 type1sum10 type1sum11 type1sum12&lt;BR /&gt;type2sum09 type2sum10 type2sum11 type2sum12 type3sum09 type3sum10 type3sum11 type3sum12;&lt;BR /&gt;&lt;BR /&gt;run;&lt;/P&gt;</description>
    <pubDate>Mon, 06 Jun 2016 16:00:52 GMT</pubDate>
    <dc:creator>melgwy</dc:creator>
    <dc:date>2016-06-06T16:00:52Z</dc:date>
    <item>
      <title>Extracting a year from a variable (in an array) and creating sums</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275435#M7716</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need help with the following code below. I do not think that my year{i} variable is formatted correctly and I cannot figure out why. When I attempt to create a sum for each year and type (type1sum09-12, etc.) I end up with a zero for each year. Any help would be greatly appreciated.&amp;nbsp;Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data transpose3;&lt;BR /&gt;set transpose2;&lt;BR /&gt;array type[759];&lt;BR /&gt;array visitdate[759];&lt;BR /&gt;array yearx[759];&lt;BR /&gt;array newdate[759];&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;type1sum09 = 0;&lt;BR /&gt;type1sum10 = 0;&lt;BR /&gt;type1sum11 = 0;&lt;BR /&gt;type1sum12 = 0;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;type2sum09 = 0;&lt;BR /&gt;type2sum10 = 0;&lt;BR /&gt;type2sum11 = 0;&lt;BR /&gt;type2sum12 = 0;&lt;BR /&gt;&lt;BR /&gt;type3sum09 = 0;&lt;BR /&gt;type3sum10 = 0;&lt;BR /&gt;type3sum11 = 0;&lt;BR /&gt;type3sum12 = 0;&lt;BR /&gt;&lt;BR /&gt;type1sum = 0;&lt;BR /&gt;type2sum=0;&lt;BR /&gt;type3sum=0;&lt;BR /&gt;&lt;BR /&gt;/*summing the variables, by type, to get a per person count of each service*/&lt;BR /&gt;do i=1 to 758;&lt;BR /&gt;&lt;BR /&gt;newdate{i}= put(visitdate{i},year4.);&lt;BR /&gt;yearx{i} = input (newdate{i},4.);&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2009 then type1sum09 = type1sum09 + 1;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2010 then type1sum10 = type1sum10 + 1;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2011 then type1sum11 = type1sum11 + 1;&lt;BR /&gt;if type{i} = 1 and yearx{i} = 2012 then type1sum12 = type1sum12 + 1;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2009 then type2sum09 = type2sum09 + 1;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2010 then type2sum10 = type2sum10 + 1;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2011 then type2sum11 = type2sum11 + 1;&lt;BR /&gt;if type{i} = 2 and yearx{i} = 2012 then type2sum12 = type2sum12 + 1;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2009 then type3sum09 = type3sum09 + 1;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2010 then type3sum10 = type3sum10 + 1;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2011 then type3sum11 = type3sum11 + 1;&lt;BR /&gt;if type{i} = 3 and yearx{i} = 2012 then type3sum12 = type3sum12 + 1;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;if type{i} = 1 then type1sum = type1sum+ 1;&lt;BR /&gt;if type{i} = 2 then type2sum = type2sum+ 1;&lt;BR /&gt;if type{i} = 3 then type3sum = type3sum+ 1;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;end;&lt;BR /&gt;drop i;&lt;BR /&gt;&lt;BR /&gt;keep uidnum type1-type759 type1sum type2sum type3sum type1sum09 type1sum10 type1sum11 type1sum12&lt;BR /&gt;type2sum09 type2sum10 type2sum11 type2sum12 type3sum09 type3sum10 type3sum11 type3sum12;&lt;BR /&gt;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jun 2016 16:00:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275435#M7716</guid>
      <dc:creator>melgwy</dc:creator>
      <dc:date>2016-06-06T16:00:52Z</dc:date>
    </item>
    <item>
      <title>Re: Extracting a year from a variable (in an array) and creating sums</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275450#M7717</link>
      <description>&lt;P&gt;First would be to varify that your Visitdate variables are actually SAS date values (proc contents and look at the format or use the SAS/Explorer to examine variables)&lt;/P&gt;
&lt;P&gt;After that since I don't see any explicit definition of the array elements in Newdate I suspect that the length of those elements has defaulted to $ 8. Which when written with put(date,year4.) are Right justified in the field and then the Input(newdate,4.) reads the First 4 characters which are blank.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Unless you really need that newdate character variable then you may get by with&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;yearx[i] = year(visitdate[i]);&lt;/P&gt;
&lt;P&gt;if you need the Newdate to hold exactly 4 characters then the array definition&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;array newdate(759) $ 4;&lt;/P&gt;
&lt;P&gt;may help.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Of course, I'm also not seeing where the other arrays get associated with variables from Transpose2 explicitly (which would be a very good idea).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jun 2016 16:49:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275450#M7717</guid>
      <dc:creator>ballardw</dc:creator>
      <dc:date>2016-06-06T16:49:31Z</dc:date>
    </item>
    <item>
      <title>Re: Extracting a year from a variable (in an array) and creating sums</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275496#M7724</link>
      <description>&lt;P&gt;It looks like you're creating about 1,500 variables that you don't really need.&amp;nbsp; Consider replacing your DO loop with this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;do i=1 to 758;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; year = year(visitdate{i});&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if type{i}=1 then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type1sum+1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if year=2009 then type1sum09 + 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if year=2010 then type1sum10 + 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if year=2011 then type1sum11 + 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if year=2012 then type1sum12 + 1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; else if type{i}=2 then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ** similarly ...;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; else if type{i}=3 then do;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ** similarly ...;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; drop i year;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Not sure why the loop should go from 1 to 758 instead of 1 to 759, but that's how the code was posted originally.&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jun 2016 18:28:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275496#M7724</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2016-06-06T18:28:50Z</dc:date>
    </item>
    <item>
      <title>Re: Extracting a year from a variable (in an array) and creating sums</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275517#M7726</link>
      <description>&lt;P&gt;Thank you so much. I did notice an oversight in my array, so I changed the number to 759 instead of 758. I used your suggestions and the code worked perfectly!!!&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jun 2016 20:17:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275517#M7726</guid>
      <dc:creator>melgwy</dc:creator>
      <dc:date>2016-06-06T20:17:38Z</dc:date>
    </item>
    <item>
      <title>Re: Extracting a year from a variable (in an array) and creating sums</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275518#M7727</link>
      <description>&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Mon, 06 Jun 2016 20:18:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Extracting-a-year-from-a-variable-in-an-array-and-creating-sums/m-p/275518#M7727</guid>
      <dc:creator>melgwy</dc:creator>
      <dc:date>2016-06-06T20:18:17Z</dc:date>
    </item>
  </channel>
</rss>

