<?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: Finding default values in a dataset given in macro variable default values in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29179#M5482</link>
    <description>Once again thank you for your qucik response but I need to find out the default values in a dataset which has around 400 variables and above 1 lakh obs...so please do consider it as a performance issue as I need to transpose a variable with huge obs..and few varaibles in my dataset has almost filled with all default values ....&lt;BR /&gt;
&lt;BR /&gt;
Rgds&lt;BR /&gt;
Sam...</description>
    <pubDate>Tue, 01 Jun 2010 05:35:31 GMT</pubDate>
    <dc:creator>deleted_user</dc:creator>
    <dc:date>2010-06-01T05:35:31Z</dc:date>
    <item>
      <title>Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29174#M5477</link>
      <description>Hi All,&lt;BR /&gt;
The below is my sample input dataset X. &lt;BR /&gt;
And i have a list of default values which is in a macro variable&lt;BR /&gt;
%let default_values=-999,-998,-997,999. &lt;BR /&gt;
And i need the below output shown with variable and its associated default values only for numeric variables separated by comma.&lt;BR /&gt;
&lt;BR /&gt;
Input Dataset:&lt;BR /&gt;
&lt;BR /&gt;
Data X;&lt;BR /&gt;
input x1 x2 x3 x4$;&lt;BR /&gt;
cards;&lt;BR /&gt;
123 234 345 A&lt;BR /&gt;
-999 212 999 S&lt;BR /&gt;
453 543 -998 Q&lt;BR /&gt;
-998 768 -997 W&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
Output:&lt;BR /&gt;
&lt;BR /&gt;
Variable Default_Values&lt;BR /&gt;
x1 -999,-998&lt;BR /&gt;
x2&lt;BR /&gt;
x3 999,-998,-997&lt;BR /&gt;
&lt;BR /&gt;
Thanks &lt;BR /&gt;
Sam...&lt;BR /&gt;
&lt;BR /&gt;
&lt;B&gt;&lt;/B&gt;&lt;B&gt;&lt;/B&gt;</description>
      <pubDate>Sat, 29 May 2010 10:27:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29174#M5477</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-05-29T10:27:17Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29175#M5478</link>
      <description>I don't know whether the followsing code is what you need.&lt;BR /&gt;
try it .&lt;BR /&gt;
[pre]&lt;BR /&gt;
%let default_values=-999,-998,-997,999;&lt;BR /&gt;
Data X;&lt;BR /&gt;
input x1 x2 x3 x4$;&lt;BR /&gt;
cards;&lt;BR /&gt;
123 234 345 A&lt;BR /&gt;
-999 212 999 S&lt;BR /&gt;
453 543 -998 Q&lt;BR /&gt;
-998 768 -997 W&lt;BR /&gt;
;&lt;BR /&gt;
run;&lt;BR /&gt;
data temp;&lt;BR /&gt;
  set x(drop=x4);&lt;BR /&gt;
  array x{3};&lt;BR /&gt;
  do i=1 to 3;&lt;BR /&gt;
    if x{i} in (&amp;amp;default_values) then continue;&lt;BR /&gt;
	  else call missing(x{i});&lt;BR /&gt;
  end;&lt;BR /&gt;
  drop i;&lt;BR /&gt;
run;&lt;BR /&gt;
proc transpose data=temp out=data;&lt;BR /&gt;
run;&lt;BR /&gt;
proc print data=data noobs;&lt;BR /&gt;
run;&lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
Ksharp&lt;BR /&gt;
&lt;BR /&gt;
Message was edited by: Ksharp</description>
      <pubDate>Sat, 29 May 2010 13:20:08 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29175#M5478</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2010-05-29T13:20:08Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29176#M5479</link>
      <description>Thank you very much for the reply, but the output format which I need is it should have 2 columns one is column name and the second with default values separated by comma.&lt;BR /&gt;
I dont prefer using transpose becas it generates all the obs into columns where in i have 1lakh obs in my dataset.&lt;BR /&gt;
&lt;BR /&gt;
Regards&lt;BR /&gt;
Sam</description>
      <pubDate>Mon, 31 May 2010 07:20:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29176#M5479</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-05-31T07:20:48Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29177#M5480</link>
      <description>You can add a DATA step to concatenate non-missing variable values (generated by PROC TRANSPOSE) into a SAS CHARACTER type variable, using the CATX function and a DO/END code paragraph with an ARRAY to reference your numeric variables, as shown below:&lt;BR /&gt;
&lt;BR /&gt;
LENGTH DefaultValues $500;&lt;BR /&gt;
ARRAY ANUMVARS (*) COL: ;&lt;BR /&gt;
DO I=1 TO DIM(ANUMVARS);&lt;BR /&gt;
  IF ANUMVARS(I) NE . THEN DefaultValues = CATX(',',DefaultValues,ANUMVARS(I));&lt;BR /&gt;
END;&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
Scott Barry&lt;BR /&gt;
SBBWorks, Inc.</description>
      <pubDate>Mon, 31 May 2010 11:46:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29177#M5480</guid>
      <dc:creator>sbb</dc:creator>
      <dc:date>2010-05-31T11:46:33Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29178#M5481</link>
      <description>Hi, if you do not have  a lot of variables .&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
%let default_values=-999,-998,-997,999;&lt;BR /&gt;
Data X;&lt;BR /&gt;
input x1 x2 x3 x4$;&lt;BR /&gt;
cards;&lt;BR /&gt;
123 234 345 A&lt;BR /&gt;
-999 212 999 S&lt;BR /&gt;
453 543 -998 Q&lt;BR /&gt;
-998 768 -997 W&lt;BR /&gt;
;&lt;BR /&gt;
run;&lt;BR /&gt;
data temp;&lt;BR /&gt;
  set x;&lt;BR /&gt;
  array x{*} _numeric_;&lt;BR /&gt;
  do i=1 to dim(x);&lt;BR /&gt;
    if x{i} in (&amp;amp;default_values) then continue;&lt;BR /&gt;
	  else call missing(x{i});&lt;BR /&gt;
  end;&lt;BR /&gt;
  drop i;&lt;BR /&gt;
run;&lt;BR /&gt;
proc sql;&lt;BR /&gt;
  select x1,x2,x3 &lt;BR /&gt;
   into :x_1 separated by ',' , :x_2 separated by ',' ,  :x_3 separated by ','&lt;BR /&gt;
  from  temp ;&lt;BR /&gt;
quit;&lt;BR /&gt;
data result;&lt;BR /&gt;
  length variable $ 2&lt;BR /&gt;
         default_values $ 2000 ; *default_values's length can change to fit the number of your observations;&lt;BR /&gt;
  variable = 'x1' ;&lt;BR /&gt;
  default_values = compress(tranwrd("&amp;amp;x_1",'.,',' '),' .');  &lt;BR /&gt;
  output;&lt;BR /&gt;
  variable = 'x2' ;&lt;BR /&gt;
  default_values = compress(tranwrd("&amp;amp;x_2",'.,',' '),' .'); &lt;BR /&gt;
  output;&lt;BR /&gt;
  variable = 'x3' ;&lt;BR /&gt;
  default_values = compress(tranwrd("&amp;amp;x_3",'.,',' '),' .'); &lt;BR /&gt;
  output;&lt;BR /&gt;
run;&lt;BR /&gt;
proc print noobs;&lt;BR /&gt;
run;&lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
Ksharp

Message was edited by: Ksharp</description>
      <pubDate>Mon, 31 May 2010 13:05:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29178#M5481</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2010-05-31T13:05:21Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29179#M5482</link>
      <description>Once again thank you for your qucik response but I need to find out the default values in a dataset which has around 400 variables and above 1 lakh obs...so please do consider it as a performance issue as I need to transpose a variable with huge obs..and few varaibles in my dataset has almost filled with all default values ....&lt;BR /&gt;
&lt;BR /&gt;
Rgds&lt;BR /&gt;
Sam...</description>
      <pubDate>Tue, 01 Jun 2010 05:35:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29179#M5482</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2010-06-01T05:35:31Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29180#M5483</link>
      <description>ODS CSV would create a comma separated file for you, once your dataset was in the correct structure. &lt;BR /&gt;
&lt;BR /&gt;
But I'm confused. You said you have the list of default values in a macro variable. Then, you need to get rid of anything that is not one of these default values and your data is changing structure. When data changes structure, there is generally some transformation that needs to take place for every observation, possibly for every variable. &lt;BR /&gt;
&lt;BR /&gt;
Possibly you could explain a bit more about your data going in and your data coming out -- such as why the data coming out has to be in such a particular format and/or whether there's any subsetting that can take place before the structure is transformed.&lt;BR /&gt;
&lt;BR /&gt;
cynthia</description>
      <pubDate>Tue, 01 Jun 2010 14:16:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29180#M5483</guid>
      <dc:creator>Cynthia_sas</dc:creator>
      <dc:date>2010-06-01T14:16:32Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29181#M5484</link>
      <description>Hi . sam&lt;BR /&gt;
It should be a problem.&lt;BR /&gt;
For your situation, It should be to use marco to recode the Proc sql .&lt;BR /&gt;
But I do not know what your variables look like .</description>
      <pubDate>Tue, 01 Jun 2010 15:08:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29181#M5484</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2010-06-01T15:08:12Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29182#M5485</link>
      <description>Hi, sam.&lt;BR /&gt;
I think i got what you need. If all of cols of variables you analysised are numeric.&lt;BR /&gt;
And thank sbb, you give a clever think.&lt;BR /&gt;
&lt;BR /&gt;
[pre]&lt;BR /&gt;
%let default_values=-999,-998,-997,999;&lt;BR /&gt;
Data X;&lt;BR /&gt;
input x1 x2 x3 x4$;&lt;BR /&gt;
cards;&lt;BR /&gt;
123 234 345 A&lt;BR /&gt;
-999 212 999 S&lt;BR /&gt;
453 543 -998 Q&lt;BR /&gt;
-998 768 -997 W&lt;BR /&gt;
;&lt;BR /&gt;
run;&lt;BR /&gt;
data temp;&lt;BR /&gt;
  set x;&lt;BR /&gt;
  array x{*} _numeric_;&lt;BR /&gt;
  do i=1 to dim(x);&lt;BR /&gt;
    if x{i} in (&amp;amp;default_values) then do;&lt;BR /&gt;
                                     varname=vname(x{i});&lt;BR /&gt;
	                                 value=x{i};&lt;BR /&gt;
	                                 output;&lt;BR /&gt;
                                     end;&lt;BR /&gt;
		else do;&lt;BR /&gt;
		     varname=vname(x{i});&lt;BR /&gt;
	         value=.;&lt;BR /&gt;
	         output;&lt;BR /&gt;
			 end;&lt;BR /&gt;
  end;&lt;BR /&gt;
  keep varname value;&lt;BR /&gt;
run;&lt;BR /&gt;
proc sort data=temp;&lt;BR /&gt;
by varname;&lt;BR /&gt;
run;&lt;BR /&gt;
data tmp;&lt;BR /&gt;
  set temp;&lt;BR /&gt;
  by varname;&lt;BR /&gt;
  length variable $ 4 default_values $ 200;&lt;BR /&gt;
  retain variable default_values;&lt;BR /&gt;
  if first.varname then do;&lt;BR /&gt;
                        variable = varname;&lt;BR /&gt;
						default_values = ' ';&lt;BR /&gt;
						end;&lt;BR /&gt;
 &lt;BR /&gt;
  if not missing(value) then default_values=catx(',',default_values,value);&lt;BR /&gt;
&lt;BR /&gt;
  * this code is from sbb, thank sbb;&lt;BR /&gt;
  if last.varname then output;&lt;BR /&gt;
  keep variable default_values;&lt;BR /&gt;
run;&lt;BR /&gt;
proc print noobs;&lt;BR /&gt;
run;&lt;BR /&gt;
[/pre]&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
Ksharp                          Optimize  code&lt;BR /&gt;
&lt;BR /&gt;
Message was edited by: Ksharp

Message was edited by: Ksharp</description>
      <pubDate>Wed, 02 Jun 2010 06:59:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29182#M5485</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2010-06-02T06:59:00Z</dc:date>
    </item>
    <item>
      <title>Re: Finding default values in a dataset given in macro variable default values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29183#M5486</link>
      <description>Another option for you,&lt;BR /&gt;
&lt;BR /&gt;
%let default_values=-999,-998,-997,999;&lt;BR /&gt;
&lt;BR /&gt;
Data X;&lt;BR /&gt;
input x1 x2 x3 x4$;&lt;BR /&gt;
cards;&lt;BR /&gt;
123 234 345 A&lt;BR /&gt;
-999 212 999 S&lt;BR /&gt;
453 543 -998 Q&lt;BR /&gt;
-998 768 -997 W&lt;BR /&gt;
;&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
proc transpose data = x out = x1;&lt;BR /&gt;
&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
data x2( drop = COL:);&lt;BR /&gt;
  set x1(rename= _NAME_ = val);&lt;BR /&gt;
  array a _numeric_;&lt;BR /&gt;
  length str $50;&lt;BR /&gt;
  str = "";&lt;BR /&gt;
  do over a;&lt;BR /&gt;
    if a in (&amp;amp;default_values) then str = catx(',', str, a);&lt;BR /&gt;
&lt;BR /&gt;
  end;&lt;BR /&gt;
&lt;BR /&gt;
&lt;BR /&gt;
run;&lt;BR /&gt;
&lt;BR /&gt;
proc print data=x2;run;&lt;BR /&gt;
&lt;BR /&gt;
Happy Friday,&lt;BR /&gt;
PJ</description>
      <pubDate>Fri, 04 Jun 2010 12:43:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Finding-default-values-in-a-dataset-given-in-macro-variable/m-p/29183#M5486</guid>
      <dc:creator>P_J</dc:creator>
      <dc:date>2010-06-04T12:43:25Z</dc:date>
    </item>
  </channel>
</rss>

