<?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: Function that uses a string as argument in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820870#M324041</link>
    <description>&lt;PRE&gt;data have;
infile cards expandtabs;
input before_group_3	after_group_3	before_group_4	after_group_4	before :$20.	after  :$20.;
cards;
3	4	1	2	before_group_3	after_group_3
5	6	3	4	before_group_4	after_group_4
7	7	1	2	before_group_3	after_group_3
;

data want;
 set have;
 before_eval=vvaluex(before);
 after_eval=vvaluex(after);
run;&lt;/PRE&gt;</description>
    <pubDate>Wed, 29 Jun 2022 08:09:40 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2022-06-29T08:09:40Z</dc:date>
    <item>
      <title>Function that uses a string as argument</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820867#M324038</link>
      <description>&lt;P&gt;Sorry for the confusing title. Here is what I mean:&amp;nbsp;&amp;nbsp;&lt;BR /&gt;I have a dataset&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;before_group_3&lt;/TD&gt;&lt;TD&gt;after_group_3&lt;/TD&gt;&lt;TD&gt;before_group_4&lt;/TD&gt;&lt;TD&gt;after_group_4&lt;/TD&gt;&lt;TD&gt;before&lt;/TD&gt;&lt;TD&gt;after&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;before_group_3&lt;/TD&gt;&lt;TD&gt;after_group_3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;before_group_4&lt;/TD&gt;&lt;TD&gt;after_group_4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;before_group_3&lt;/TD&gt;&lt;TD&gt;after_group_3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to add another column:&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;before_group_3&lt;/TD&gt;&lt;TD&gt;after_group_3&lt;/TD&gt;&lt;TD&gt;before_group_4&lt;/TD&gt;&lt;TD&gt;after_group_4&lt;/TD&gt;&lt;TD&gt;before&lt;/TD&gt;&lt;TD&gt;after&lt;/TD&gt;&lt;TD&gt;before_eval&lt;/TD&gt;&lt;TD&gt;after_eval&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;before_group_3&lt;/TD&gt;&lt;TD&gt;after_group_3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;TD&gt;before_group_4&lt;/TD&gt;&lt;TD&gt;after_group_4&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;11&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;before_group_3&lt;/TD&gt;&lt;TD&gt;after_group_3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I think that I could do in a datastep:&lt;/P&gt;&lt;P&gt;if before = "before_group_3" then before_eval = before_group_3;&lt;/P&gt;&lt;P&gt;if before = "before_group_4" then before_eval = before_group_4;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;so I want a function that does this:&lt;BR /&gt;before_eval = FUNCTION(before)&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&lt;BR /&gt;I have a lot more groups, e.g. group_99, so that's why I want a function like this&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jun 2022 06:54:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820867#M324038</guid>
      <dc:creator>yellowyellowred</dc:creator>
      <dc:date>2022-06-29T06:54:35Z</dc:date>
    </item>
    <item>
      <title>Re: Function that uses a string as argument</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820870#M324041</link>
      <description>&lt;PRE&gt;data have;
infile cards expandtabs;
input before_group_3	after_group_3	before_group_4	after_group_4	before :$20.	after  :$20.;
cards;
3	4	1	2	before_group_3	after_group_3
5	6	3	4	before_group_4	after_group_4
7	7	1	2	before_group_3	after_group_3
;

data want;
 set have;
 before_eval=vvaluex(before);
 after_eval=vvaluex(after);
run;&lt;/PRE&gt;</description>
      <pubDate>Wed, 29 Jun 2022 08:09:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820870#M324041</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2022-06-29T08:09:40Z</dc:date>
    </item>
    <item>
      <title>Re: Function that uses a string as argument</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820871#M324042</link>
      <description>&lt;P&gt;Thanks! Is there a function that returns a numeric instead?&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jun 2022 08:21:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820871#M324042</guid>
      <dc:creator>yellowyellowred</dc:creator>
      <dc:date>2022-06-29T08:21:12Z</dc:date>
    </item>
    <item>
      <title>Re: Function that uses a string as argument</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820875#M324045</link>
      <description>&lt;P&gt;VVALUE(X) is designed to return a character. You can wrap the call to VVALUEX in a call to INPUT:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
 set have;
 before_eval=input(vvaluex(before), best.);
 after_eval=input(vvaluex(after), best.);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;- Jan&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jun 2022 09:16:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/820875#M324045</guid>
      <dc:creator>jklaverstijn</dc:creator>
      <dc:date>2022-06-29T09:16:10Z</dc:date>
    </item>
    <item>
      <title>Re: Function that uses a string as argument</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/821018#M324113</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;before_eval = input(scan(before,-1,"_"),best.);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;to extract the numeric value from the string.&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jun 2022 20:18:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/821018#M324113</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2022-06-29T20:18:38Z</dc:date>
    </item>
    <item>
      <title>Re: Function that uses a string as argument</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/821051#M324136</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/412505"&gt;@yellowyellowred&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Thanks! Is there a function that returns a numeric instead?&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Not as simply.&lt;/P&gt;
&lt;P&gt;You could convert the string back to a number.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;number = input( vvaluex( variable_with_name ) , 32. );&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You could do some tricks so you could index into an array.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;array numbers var1 var2 var3 ;
array names $32 [3] _temporary_ ('var1','var2','var3');
number = numbers[ whichc( variable_with_name, of names[*]) ] ;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;Or&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;array numbers var1 var2 var3 ;
number = numbers[ findw('var1 var2 var3', variable_with_name,' ','e') ] ;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Jun 2022 00:44:43 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Function-that-uses-a-string-as-argument/m-p/821051#M324136</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2022-06-30T00:44:43Z</dc:date>
    </item>
  </channel>
</rss>

