<?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: Proc IML to typical sas coding in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141177#M37680</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is better asked in the DATA step forum.&amp;nbsp; You can use PROC DISTANCE to find the distance between obs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 12 Mar 2014 15:22:49 GMT</pubDate>
    <dc:creator>Rick_SAS</dc:creator>
    <dc:date>2014-03-12T15:22:49Z</dc:date>
    <item>
      <title>Proc IML to typical sas coding</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141176#M37679</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I found this interesting macro at a paper for imputing missing values using the nearest neighbor technique, my problem is that this macro contains a part done with proc iml , a procedure that i dont have in my sas base,&lt;/P&gt;&lt;P&gt;Ho would be possible to lets say translate it into normal code script?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Kind regards and thnx in advance, the macro is:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%MACRO NNI(INDATA=, /*INPUT DATA SET(INCLUDING LIBRARY NAME) */&lt;/P&gt;&lt;P&gt;MISSVAR=, /*INPUT SINGLE VARIABLE WITH MISSING DATA*/&lt;/P&gt;&lt;P&gt;RESPVAR=, /*RESPONSE VARIABLE*/&lt;/P&gt;&lt;P&gt;IDVAR=, /*SUBJECT VARIABLE*/&lt;/P&gt;&lt;P&gt;OUTDATA= /*OUTPUT DATA SET WITH COMPLETE DATA*/&lt;/P&gt;&lt;P&gt;);&lt;/P&gt;&lt;P&gt;DATA OBSY_MISSX;&lt;/P&gt;&lt;P&gt;SET &amp;amp;INDATA;&lt;/P&gt;&lt;P&gt;IF &amp;amp;MISSVAR=.;&lt;/P&gt;&lt;P&gt;KEEP &amp;amp;IDVAR &amp;amp;RESPVAR;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC MEANS DATA=&amp;amp;INDATA N NMISS NOPRINT;&lt;/P&gt;&lt;P&gt;VAR &amp;amp;MISSVAR;&lt;/P&gt;&lt;P&gt;OUTPUT OUT=OBSN N=OBSX NMISS=MISSX;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;DATA _NULL_;&lt;/P&gt;&lt;P&gt;SET OBSN;&lt;/P&gt;&lt;P&gt;CALL SYMPUT('OBSN',OBSX);&lt;/P&gt;&lt;P&gt;CALL SYMPUT('MISSN',MISSX);&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;DATA SIMDATA_NOMISS;&lt;/P&gt;&lt;P&gt;SET &amp;amp;INDATA;&lt;/P&gt;&lt;P&gt;IF &amp;amp;MISSVAR NE .;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;PROC IML;&lt;/P&gt;&lt;P&gt;USE SIMDATA_NOMISS;&lt;/P&gt;&lt;P&gt;READ ALL VAR {&amp;amp;MISSVAR} INTO XMAT;&lt;/P&gt;&lt;P&gt;READ ALL VAR {&amp;amp;RESPVAR} INTO YMAT;&lt;/P&gt;&lt;P&gt;6&lt;/P&gt;&lt;P&gt;USE OBSY_MISSX;&lt;/P&gt;&lt;P&gt;READ ALL VAR {&amp;amp;IDVAR &amp;amp;RESPVAR} INTO MISSMAT;&lt;/P&gt;&lt;P&gt;TXMAT=T(XMAT);&lt;/P&gt;&lt;P&gt;TYMAT=T(YMAT);&lt;/P&gt;&lt;P&gt;DISTANCE=J(&amp;amp;MISSN,&amp;amp;OBSN,.);&lt;/P&gt;&lt;P&gt;MIND=J(&amp;amp;MISSN,1,.);&lt;/P&gt;&lt;P&gt;MISSVAR=J(&amp;amp;MISSN,&amp;amp;OBSN,.);&lt;/P&gt;&lt;P&gt;IMP=J(&amp;amp;MISSN,1,.);&lt;/P&gt;&lt;P&gt;DO I = 1 TO &amp;amp;MISSN;&lt;/P&gt;&lt;P&gt;DO J = 1 TO &amp;amp;OBSN;&lt;/P&gt;&lt;P&gt;DISTANCE[I,J]=ABS(MISSMAT[I,2]-TYMAT[,J]);&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;MIND[I,]=MIN(DISTANCE[I,]);&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;DO I = 1 TO &amp;amp;MISSN;&lt;/P&gt;&lt;P&gt;DO J = 1 TO &amp;amp;OBSN;&lt;/P&gt;&lt;P&gt;IF DISTANCE[I,J]=MIND[I,] THEN MISSVAR[I,J]=TXMAT[,J];&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;IMP[I,]=MISSVAR[I,:];&lt;/P&gt;&lt;P&gt;END;&lt;/P&gt;&lt;P&gt;CNAME={"&amp;amp;IDVAR" "&amp;amp;RESPVAR" "&amp;amp;MISSVAR"};&lt;/P&gt;&lt;P&gt;IMPX=MISSMAT||IMP;&lt;/P&gt;&lt;P&gt;CREATE NNI FROM IMPX[C=CNAME];&lt;/P&gt;&lt;P&gt;APPEND FROM IMPX;&lt;/P&gt;&lt;P&gt;QUIT;&lt;/P&gt;&lt;P&gt;DATA &amp;amp;OUTDATA;&lt;/P&gt;&lt;P&gt;MERGE &amp;amp;INDATA NNI;&lt;/P&gt;&lt;P&gt;BY &amp;amp;IDVAR;&lt;/P&gt;&lt;P&gt;RUN;&lt;/P&gt;&lt;P&gt;%MEND;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Mar 2014 15:13:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141176#M37679</guid>
      <dc:creator>chemicalab</dc:creator>
      <dc:date>2014-03-12T15:13:24Z</dc:date>
    </item>
    <item>
      <title>Re: Proc IML to typical sas coding</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141177#M37680</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This is better asked in the DATA step forum.&amp;nbsp; You can use PROC DISTANCE to find the distance between obs.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Mar 2014 15:22:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141177#M37680</guid>
      <dc:creator>Rick_SAS</dc:creator>
      <dc:date>2014-03-12T15:22:49Z</dc:date>
    </item>
    <item>
      <title>Re: Proc IML to typical sas coding</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141178#M37681</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you for the clarification, will check that&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 12 Mar 2014 15:25:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/Proc-IML-to-typical-sas-coding/m-p/141178#M37681</guid>
      <dc:creator>chemicalab</dc:creator>
      <dc:date>2014-03-12T15:25:27Z</dc:date>
    </item>
  </channel>
</rss>

