<?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: Data cleaning in SAS Enterprise Guide</title>
    <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398537#M25616</link>
    <description>&lt;P&gt;You didn't show your code using Proc Transpose, but I believe with some&amp;nbsp;dataset options, &amp;nbsp;Proc transpose&amp;nbsp;ALONE&amp;nbsp;can produce the outcome you listed:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover ;
input application_ID  status  'total income'n :dollar10.  Type 'code Desc'n &amp;amp; $18.;
cards; 
74628 1 $45,787 3 main income 
74628 2 $4,689 2 other income 
74628 3 $57,812 1 one off income 
213514 1 $12,789 3 main income 
213514 2 $54,713 2 other income 
213514 3 $13,574 1 one off income 
;
run;
PROC TRANSPOSE DATA=WORK.have 
	OUT=WORK.want(drop=_name_ where=('main income'n ne .))
	LET
;
	BY application_ID;
	ID "code Desc"n;
	VAR "total income"n;
	COPY "total income"n;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 25 Sep 2017 13:50:49 GMT</pubDate>
    <dc:creator>Haikuo</dc:creator>
    <dc:date>2017-09-25T13:50:49Z</dc:date>
    <item>
      <title>Data cleaning</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398455#M25606</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I had a data issue the other day, I resolved it using proc transpose however the results had some limitations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've recreated the data set as a basic dummy one below (I cannot share the real one):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;application_ID&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;status&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;total income&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Type code&lt;/TD&gt;&lt;TD&gt;Desc&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$45,787&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;main income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;$4,689&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;other income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;$57,812&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;one off income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;$12,789&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;main income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;$54,713&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;other income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;$13,574&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;one off income&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to make the income types columns. I ran this code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data test (drop = status type_code desc);&lt;BR /&gt;set dummy;&lt;BR /&gt;if Type_code = 1 then one_off_income = total_Income;&lt;BR /&gt;else if Type_code = 2 then other_income = total_Income;&lt;BR /&gt;else if type_code = 3 then main_income = total_income;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;and got:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;application_ID&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;total income&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;one off income&lt;/TD&gt;&lt;TD&gt;main income&lt;/TD&gt;&lt;TD&gt;other income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;$45,787&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;$45,787&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;$4,689&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;$4,689&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;$57,812&lt;/TD&gt;&lt;TD&gt;$57,812&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;$12,789&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;$12,789&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;$54,713&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;$54,713&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;$13,574&lt;/TD&gt;&lt;TD&gt;$13,574&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How do i get it to turn out like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;application_ID&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;total income&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;one off income&lt;/TD&gt;&lt;TD&gt;main income&lt;/TD&gt;&lt;TD&gt;other income&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;74628&lt;/TD&gt;&lt;TD&gt;$45,787&lt;/TD&gt;&lt;TD&gt;$57,812&lt;/TD&gt;&lt;TD&gt;$45,787&lt;/TD&gt;&lt;TD&gt;$4,689&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;213514&lt;/TD&gt;&lt;TD&gt;$12,789&lt;/TD&gt;&lt;TD&gt;$13,574&lt;/TD&gt;&lt;TD&gt;$12,789&lt;/TD&gt;&lt;TD&gt;$54,713&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't want to use the transpose function becuase I have heaps of other variables and it errors if I included them all in the var step.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I hope the above makes sense. I appreciate any help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;Scott&lt;/P&gt;</description>
      <pubDate>Mon, 25 Sep 2017 08:01:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398455#M25606</guid>
      <dc:creator>Scott86</dc:creator>
      <dc:date>2017-09-25T08:01:04Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398461#M25607</link>
      <description>&lt;P&gt;Why not use Proc summary ? &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Proc summary data=test nway missing;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;class application_id;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;var total income one off income main income other income; /**** Need change here, just guessing&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; ***/&lt;/P&gt;
&lt;P&gt;&amp;nbsp;output out=testsum sum=;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;//Fredrik&lt;/P&gt;</description>
      <pubDate>Mon, 25 Sep 2017 08:41:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398461#M25607</guid>
      <dc:creator>FredrikE</dc:creator>
      <dc:date>2017-09-25T08:41:37Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398508#M25611</link>
      <description>&lt;P&gt;The suggestion from &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13827"&gt;@FredrikE&lt;/a&gt;&amp;nbsp;is a good fix, to take what you produced with your attempt and convert it to what you want.&amp;nbsp; However, if you want to take your original data set and patch your original program, here are the changes it would take:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data test (drop = status type_code desc);&lt;BR /&gt;set dummy;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#ff0000"&gt;by application_ID;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#ff0000"&gt;retain one_off_income other_income main_income;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#ff0000"&gt;if first.application_ID then call missing(one_off_income other_income main_income);&lt;/FONT&gt;&lt;BR /&gt;if Type_code = 1 then one_off_income = total_Income;&lt;BR /&gt;else if Type_code = 2 then other_income = total_Income;&lt;BR /&gt;else if type_code = 3 then main_income = total_income;&lt;/P&gt;
&lt;P&gt;&lt;FONT color="#ff0000"&gt;if last.application_id;&lt;/FONT&gt;&lt;BR /&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;To be permitted to use the BY statement, your data set has to be in sorted order before the DATA step begins.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Sep 2017 12:50:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398508#M25611</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-09-25T12:50:21Z</dc:date>
    </item>
    <item>
      <title>Re: Data cleaning</title>
      <link>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398537#M25616</link>
      <description>&lt;P&gt;You didn't show your code using Proc Transpose, but I believe with some&amp;nbsp;dataset options, &amp;nbsp;Proc transpose&amp;nbsp;ALONE&amp;nbsp;can produce the outcome you listed:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards truncover ;
input application_ID  status  'total income'n :dollar10.  Type 'code Desc'n &amp;amp; $18.;
cards; 
74628 1 $45,787 3 main income 
74628 2 $4,689 2 other income 
74628 3 $57,812 1 one off income 
213514 1 $12,789 3 main income 
213514 2 $54,713 2 other income 
213514 3 $13,574 1 one off income 
;
run;
PROC TRANSPOSE DATA=WORK.have 
	OUT=WORK.want(drop=_name_ where=('main income'n ne .))
	LET
;
	BY application_ID;
	ID "code Desc"n;
	VAR "total income"n;
	COPY "total income"n;

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 25 Sep 2017 13:50:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Enterprise-Guide/Data-cleaning/m-p/398537#M25616</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2017-09-25T13:50:49Z</dc:date>
    </item>
  </channel>
</rss>

