<?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: How do I delete variables based on their values in an outstat file? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/677125#M204229</link>
    <description>&lt;P&gt;Base on &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt;'s code, this worked:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data fout2;
    set fout (where=(_TYPE_="COMMUNAL"));
run;

proc transpose data=fout2 out=communal; id _TYPE_; run;

proc sql;
    select _name_ into :names separated by ' ' from communal
        where communal &amp;lt;.15;
quit;

/* drop variables with low communalities from data set */

data normed_clean ;
    set normed ;
    drop &amp;amp;names;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 17 Aug 2020 00:45:15 GMT</pubDate>
    <dc:creator>tonybesas</dc:creator>
    <dc:date>2020-08-17T00:45:15Z</dc:date>
    <item>
      <title>How do I delete variables based on their values in an outstat file?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/675522#M203559</link>
      <description>&lt;P&gt;Dear all&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'd like to delete variables from a dataset based on their values in an outstat set created by PROC FACTOR.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc factor
OUTSTAT=fout
data=normed 
method=principal scree
mineigen=0
priors=smc&lt;BR /&gt;var
say -- confirm ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;The code above&amp;nbsp;creates an outstat data set called fout. This dataset stores the communality values (among other values) in a row like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border="1" width="100%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;_TYPE_&lt;/TD&gt;
&lt;TD width="20%"&gt;NAME&lt;/TD&gt;
&lt;TD width="20%"&gt;var1&lt;/TD&gt;
&lt;TD width="20%"&gt;var2&lt;/TD&gt;
&lt;TD width="20%"&gt;var_n&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="20%"&gt;COMMUNAL&lt;/TD&gt;
&lt;TD width="20%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20%"&gt;0.3995&lt;/TD&gt;
&lt;TD width="20%"&gt;0.1133&lt;/TD&gt;
&lt;TD width="20%"&gt;0.3744&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The full outstat dataset (fout) is attached in CSV format. The row in question is #205.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'd like to delete variables that have COMMUNAL that are less than .15. In this case, variable var2 would be dropped from the dataset normed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can do this by including the variables in a data statement:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA normed (DROP = var2);
SET normed;
RUN;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But since this involves checking hundreds of variables, it'd be nice if it could be automated.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Could this process be automated in a program?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm using SAS University Edition.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you all ahead for your time!&lt;/P&gt;
&lt;P&gt;Tony&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 09 Aug 2020 23:04:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/675522#M203559</guid>
      <dc:creator>tonybesas</dc:creator>
      <dc:date>2020-08-09T23:04:42Z</dc:date>
    </item>
    <item>
      <title>Re: How do I delete variables based on their values in an outstat file?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/675523#M203560</link>
      <description>&lt;P&gt;I am going to assume that you really want to delete any column that has a value less than 0.15 and greater than -0.15 even though you didn't say that.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Something like this (UNTESTED CODE)&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data fout2;
    set fout;
    array v var1-varn;
    do 1 = 1 to dim(v);
        v(i)=abs(v(i));
    end;
run;
proc summary data=fout2;
    var var1-varn;
    output out=minimums min=;
run;
proc transpose data=minimums out=minimums_t;
    var var1-varn;
run;
proc sql;
    select _name_ into :names separated by ' ' from minimums_t
        where col1&amp;lt;0.15;
quit;
data want;
    set fout;
    drop &amp;amp;names;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 09 Aug 2020 23:14:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/675523#M203560</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2020-08-09T23:14:53Z</dc:date>
    </item>
    <item>
      <title>Re: How do I delete variables based on their values in an outstat file?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/675576#M203571</link>
      <description>&lt;P&gt;Thank you for your reply.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I just want to remove the vars with values less than .15, regardless of their negative values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I oversimplified the data table for fout in my original post.&amp;nbsp;The variable names are not numeric. The table looks more like this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE border="1" width="99.89506820566632%"&gt;
&lt;TBODY&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="16px" style="height: 16.0pt; width: 65pt;"&gt;_TYPE_&lt;/TD&gt;
&lt;TD width="9.863588667366212%" height="16px" style="width: 65pt;"&gt;_NAME_&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;say&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;coronavirus&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;covid&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;people&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;time&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;take&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;make&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" style="width: 65pt;"&gt;health&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="16px" style="height: 16.0pt;"&gt;MEAN&lt;/TD&gt;
&lt;TD width="9.863588667366212%" height="16px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;6.83115306&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;2.98523827&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;3.30916916&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;3.42976631&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;2.12912599&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;1.78743404&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;1.91479591&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;2.58683648&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="16px" style="height: 16.0pt;"&gt;STD&lt;/TD&gt;
&lt;TD width="9.863588667366212%" height="16px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;5.93316505&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;3.26815184&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;3.48430046&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;3.6285918&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;2.05970761&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;1.75296901&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;1.85799116&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;3.5991221&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="16px" style="height: 16.0pt;"&gt;N&lt;/TD&gt;
&lt;TD width="9.863588667366212%" height="16px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;211455&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="16px" style="height: 16.0pt;"&gt;CORR&lt;/TD&gt;
&lt;TD width="9.863588667366212%" height="16px"&gt;say&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;1&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.15361343&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.01273492&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.16232542&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;-0.1062952&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.02024781&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;-0.030496&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.14823108&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="16px" style="height: 16.0pt;"&gt;CORR&lt;/TD&gt;
&lt;TD width="9.863588667366212%" height="16px"&gt;coronavirus&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.15361343&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;1&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;-0.0494022&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.13147976&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;-0.1120803&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.01712126&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;-0.1051971&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="16px" align="right"&gt;0.16906057&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD colspan="2" width="19.307450157397692%" height="30px"&gt;COMMUNAL&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.3857993&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.42459764&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.42993311&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.35747462&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.20179172&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.13523689&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.22256621&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;0.54063112&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="21" style="height: 16.0pt; width: 65pt;"&gt;PRIORS&lt;/TD&gt;
&lt;TD width="9.863588667366212%" style="width: 65pt;"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.2803741&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.33664296&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.34151796&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.26550787&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.14132677&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.07544468&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right" style="width: 65pt;"&gt;0.1414966&lt;/TD&gt;
&lt;TD width="10.073452256033578%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR style="height: 16.0pt;"&gt;
&lt;TD width="9.44386149003148%" height="21" style="height: 16.0pt;"&gt;EIGENVAL&lt;/TD&gt;
&lt;TD width="9.863588667366212%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;6.09010089&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;4.14327681&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;3.2221195&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;2.32712338&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;2.29719713&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;1.82682613&lt;/TD&gt;
&lt;TD width="10.073452256033578%" align="right"&gt;1.54001848&lt;/TD&gt;
&lt;TD width="10.073452256033578%" height="30px"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The line with the values is 'COMMUNAL'. Based on the cut-off of .15, the variable 'take' would be dropped.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The array is throwing an error:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;73         data fout2;
 74             set fout;
 75             array v var1-varn;
 ERROR: Missing numeric suffix on a numbered variable list (var1-varn).
 WARNING: Defining an array with zero elements.
 76             do 1 = 1 to dim(v);
                   _
                   80
                   200
 ERROR 80-322: Expecting a variable name.
 
 ERROR 200-322: The symbol is not recognized and will be ignored.
 
 77                 v(i)=abs(v(i));
 78             end;
 79         run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 10 Aug 2020 13:03:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/675576#M203571</guid>
      <dc:creator>tonybesas</dc:creator>
      <dc:date>2020-08-10T13:03:40Z</dc:date>
    </item>
    <item>
      <title>Re: How do I delete variables based on their values in an outstat file?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/677125#M204229</link>
      <description>&lt;P&gt;Base on &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/10892"&gt;@PaigeMiller&lt;/a&gt;'s code, this worked:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data fout2;
    set fout (where=(_TYPE_="COMMUNAL"));
run;

proc transpose data=fout2 out=communal; id _TYPE_; run;

proc sql;
    select _name_ into :names separated by ' ' from communal
        where communal &amp;lt;.15;
quit;

/* drop variables with low communalities from data set */

data normed_clean ;
    set normed ;
    drop &amp;amp;names;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 17 Aug 2020 00:45:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-do-I-delete-variables-based-on-their-values-in-an-outstat/m-p/677125#M204229</guid>
      <dc:creator>tonybesas</dc:creator>
      <dc:date>2020-08-17T00:45:15Z</dc:date>
    </item>
  </channel>
</rss>

