<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-14899332</id><updated>2012-02-06T11:19:20.285-05:00</updated><title type='text'>WENSUI'S BLOG IN STATISTICAL COMPUTING</title><subtitle type='html'>mainly with SAS and S programming.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-14899332.post-115544921536956511</id><published>2006-08-13T02:05:00.000-04:00</published><updated>2006-08-13T02:06:55.383-04:00</updated><title type='text'>NEW BLOG SPACE</title><content type='html'>I am moving my blog to a new space and won't update this one any more. &lt;br /&gt;&lt;br /&gt;For my new blog, please visit http://statcompute.spaces.live.com.&lt;br /&gt;&lt;br /&gt;Thank you so much!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-115544921536956511?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://statcompute.spaces.live.com/' title='NEW BLOG SPACE'/><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/115544921536956511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=115544921536956511' title='369 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/115544921536956511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/115544921536956511'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/08/new-blog-space.html' title='NEW BLOG SPACE'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>369</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-114369238429838009</id><published>2006-03-29T23:17:00.000-05:00</published><updated>2006-03-29T23:21:54.180-05:00</updated><title type='text'>WHEN SAS MEETS R: A MACRO TO IMPORT .sav OR .dta FILE</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;%macro foreign(file = , data = );&lt;br /&gt;/************************************************&lt;br /&gt;* THIS MACRO IS MOTIVATED BY FOREIGN PACKAGE IN *&lt;br /&gt;* R LANGUAGE AND DESIGNED TO READ SPSS *.sav OR *&lt;br /&gt;* STATA *.dta DATA FILE.                        *&lt;br /&gt;*************************************************&lt;br /&gt;* REQUIREMENTS TO RUN THIS MACRO:               *&lt;br /&gt;* 1. INSTALL R LANGUAGE (www.r-project.org)     *&lt;br /&gt;* 2. INSTALL FOREIGN PACKAGE                    *&lt;br /&gt;*************************************************&lt;br /&gt;* MACRO INPUTS:                                 *&lt;br /&gt;* 1. file: full path of data file.              *&lt;br /&gt;*    (example: data = c:\temp\test.sav)         *&lt;br /&gt;* 2. data: name of output SAS table             *&lt;br /&gt;*************************************************&lt;br /&gt;* AUTHOR: WENSUI LIU (wensui.liu@cchmc.org)     *&lt;br /&gt;* DATE  : 23MAR, 2006                           *&lt;br /&gt;************************************************/&lt;br /&gt;&lt;br /&gt;options mlogic mprint symbolgen;&lt;br /&gt;&lt;br /&gt;/* PATH THAT R IS INSTALLED ON PC */&lt;br /&gt;%let rpath = C:\Program Files\R\bin\;&lt;br /&gt;&lt;br /&gt;data _null_;&lt;br /&gt;    /* CHANGE PATH OF DATA FILE THAT R CAN RECOGNIZE */&lt;br /&gt;  in      = tranwrd("&amp;file", "\", "\\");&lt;br /&gt;  call symput('in', trim(in));&lt;br /&gt;    /* ASSIGN THE DIRECTORY OF DATA FILE TO MACRO VARIABLE */&lt;br /&gt;  path = substr("&amp;file", 1, index("&amp;amp;file", scan("&amp;file", -1, "\")) - 1);&lt;br /&gt;  call symput('path', trim(path));&lt;br /&gt;    /* ASSIGN NAME OF R FILE TO MACRO VARIABLE */&lt;br /&gt;  r     = trim(path)||"foreign.r";&lt;br /&gt;  call symput('r', trim(r));&lt;br /&gt;    /* ASSIGN PATH OF OUTPUT *.csv FILE TO MACRO VARIABLE */&lt;br /&gt;  csv  = tranwrd(trim(path)||"&amp;data"||".csv", '\', '\\');&lt;br /&gt;  call symput('csv', trim(csv));&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;data _null_;&lt;br /&gt;    /* GET THE EXTENSION OF DATA FILE, .sav OR .dta */&lt;br /&gt;  ext = upcase(scan("&amp;file", -1, "."));&lt;br /&gt;    /* OUTPUT A FILE WITH R CODE */&lt;br /&gt;  file "&amp;r";&lt;br /&gt;    /* WRITE R CODE TO OUTPUT R FILE */&lt;br /&gt;  put 'cat("\n", "***** Log of R execution *****", "\n\n");';&lt;br /&gt;  put "library(foreign);";&lt;br /&gt;  if ext = 'SAV' then do;&lt;br /&gt;    imp = "&amp;data"||'&lt;-read.spss(file = "'||"&amp;amp;in"||'", '||&lt;br /&gt;          "use.value.labels = FALSE, to.data.frame = TRUE);";&lt;br /&gt;  end;&lt;br /&gt;  if ext = 'DTA' then do;&lt;br /&gt;    imp = "&amp;data"||'&lt;-read.dta(file = "'||"&amp;amp;in"||'", '||&lt;br /&gt;        "convert.underscore = FALSE);";&lt;br /&gt;  end;&lt;br /&gt;  put imp;&lt;br /&gt;  exp = 'write.table('||"&amp;data"||', file = "'||"&amp;amp;csv"||'", '||&lt;br /&gt;        'sep =",", row.names = FALSE, na = " ");';&lt;br /&gt;  put exp;&lt;br /&gt;  put 'quit("no");';&lt;br /&gt;&lt;br /&gt;    /* ASSIGN SHELL SCRIPT TO RUN R LANGUAGE TO MACRO VARIABLE */&lt;br /&gt;  cmd = "'"||'"'||"&amp;rpath.Rcmd.exe"||'" BATCH -- "'||&lt;br /&gt;        "&amp;r"||'"'||"'";&lt;br /&gt;  call symput('cmd', trim(cmd));&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* RUN R CODE IN BATCH MODE */&lt;br /&gt;options XSYNC NOXWAIT XMIN;&lt;br /&gt;x &amp;cmd;&lt;br /&gt;&lt;br /&gt;/* IMPORT *.csv FILE OUTPUT BY R INTO SAS */&lt;br /&gt;proc import datafile = "&amp;path.&amp;amp;data..csv"&lt;br /&gt;  out = &amp;data replace;&lt;br /&gt;  getnames = YES;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;data _null_;&lt;br /&gt;    /* INFILE R OUTPUT */&lt;br /&gt;  infile "&amp;r..Rout";&lt;br /&gt;  input;&lt;br /&gt;    /* SHOW R OUTPUT IN SAS LOG WINDOW */&lt;br /&gt;  if _n_ &gt; 20 then put _infile_;&lt;br /&gt;    /* ASSIGN NAMES OF INTERMEDIATE FILES TO MACRO VARIABLES */&lt;br /&gt;  del1 = "'del "||'"'||"&amp;r"||'"'||"'";&lt;br /&gt;  call symput('del1', trim(del1));&lt;br /&gt;  del2 = "'del "||'"'||"&amp;path.&amp;amp;data..csv"||'"'||"'";&lt;br /&gt;  call symput('del2', trim(del2));&lt;br /&gt;  del3 = "'del "||'"'||"&amp;r..Rout"||'"'||"'";&lt;br /&gt;  call symput('del3', trim(del3));&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* DELETE INTERMEDIATE FILES */&lt;br /&gt;systask command &amp;del1;&lt;br /&gt;systask command &amp;del2;&lt;br /&gt;systask command &amp;del3;&lt;br /&gt;/************************************************&lt;br /&gt;*               END OF MACRO                    *&lt;br /&gt;************************************************/&lt;br /&gt;%mend foreign;&lt;br /&gt;&lt;br /&gt;%foreign(file = c:\temp\depression_pp.sav, data = ppsav);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-114369238429838009?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/114369238429838009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=114369238429838009' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114369238429838009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114369238429838009'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/03/when-sas-meets-r-macro-to-import-sav.html' title='WHEN SAS MEETS R: A MACRO TO IMPORT .sav OR .dta FILE'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-114209250242696650</id><published>2006-03-11T10:53:00.000-05:00</published><updated>2006-03-11T10:55:02.426-05:00</updated><title type='text'>SAS CODE ABLE TO RECOGNIZE ITS OWN PATH</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;/**************************************&lt;br /&gt;* THIS CODE IS ABLE TO RECOGNIZE THE  *&lt;br /&gt;* PATH IT IS IN BASED ON ITS OWN NAME *&lt;br /&gt;**************************************/&lt;br /&gt;&lt;br /&gt;/* SAS FILE SAVED AS MYSAS.SAS */&lt;br /&gt;%let file = MySAS;&lt;br /&gt;&lt;br /&gt;proc sql noprint;&lt;br /&gt;select distinct&lt;br /&gt;  substr(xpath,1,(index(xpath,"&amp;file..sas") -1))&lt;br /&gt;into&lt;br /&gt;  :path&lt;br /&gt;from&lt;br /&gt;  dictionary.extfiles&lt;br /&gt;where&lt;br /&gt;  index(upcase(xpath), upcase("&amp;file..sas")) &gt; 0;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;%put &amp;path;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-114209250242696650?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/114209250242696650/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=114209250242696650' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114209250242696650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114209250242696650'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/03/sas-code-able-to-recognize-its-own.html' title='SAS CODE ABLE TO RECOGNIZE ITS OWN PATH'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-114126309005987170</id><published>2006-03-01T20:29:00.000-05:00</published><updated>2006-03-11T10:48:42.963-05:00</updated><title type='text'>SAS MACRO OF VARIABLES SELECTION BY BOOTSTRAP (Modelwise)</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;%macro bootglm(data = , dv = ,iv = , class = none, n = 10);&lt;br /&gt;&lt;br /&gt;/***********************************************************&lt;br /&gt;*                                                          *&lt;br /&gt;* THIS MACRO IS TO ASSESS THE IMPORTANCE OF INDEPENDENT    *&lt;br /&gt;* VARIABLES IN GENERAL LINEAR MODEL USING BOOTSTRAP        *&lt;br /&gt;*                                                          *&lt;br /&gt;************************************************************&lt;br /&gt;*                                                          *&lt;br /&gt;*     EXPLANATION OF THE MACRO                             *&lt;br /&gt;*                                                          *&lt;br /&gt;* data : INPUT DATASET,                                    *&lt;br /&gt;* dv   : DEPENDENT VARIABLE, SAME AS LHS OF MODEL          *&lt;br /&gt;*        STATEMENT IN PROC GLM                             *&lt;br /&gt;* iv   : INDEPENDENT VARIABLES, SAME AS RHS OF MODEL       *&lt;br /&gt;*        STATEMENT IN PROC GLM                             *&lt;br /&gt;* class: CLASS VARIABLES IF NECESSARY, SAME AS INPUT       *&lt;br /&gt;*        VARIABLES OF CLASS STATEMENT IN PROC GLM          *&lt;br /&gt;* n    : NUMBER OF TIMES DRAWING RANDOM SAMPLES WITH       *&lt;br /&gt;*        REPLACEMENT FROM DATASET                          *&lt;br /&gt;*                                                          *&lt;br /&gt;************************************************************&lt;br /&gt;*                                                          *&lt;br /&gt;* AUTHOR: WENSUI LIU (WENSUI.LIU@CCHMC.ORG), 01-MAR-2006   *&lt;br /&gt;*                                                          *&lt;br /&gt;***********************************************************/&lt;br /&gt;&lt;br /&gt;proc sql noprint;&lt;br /&gt;/* CREATE AN EMPTY TABLE TO HOLD OUTPUT OF GLM */&lt;br /&gt;create table glm_result&lt;br /&gt;(&lt;br /&gt;iv   char(10),&lt;br /&gt;prob num format = 6.4,&lt;br /&gt;sig1 num format = 4.,&lt;br /&gt;sig2 num format = 4.,&lt;br /&gt;sig3 num format = 4.,&lt;br /&gt;sig4 num format = 4.&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;/* ASSIGN # OF RECORDS TO A MACRO VARIABLE &amp;sample */&lt;br /&gt;select count(*) into :sample from &amp;amp;amp;amp;data;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;/* START THE LOOP FOR RANDOM SAMPLING FROM DATASET */&lt;br /&gt;%do i = 1 %to &amp;n;&lt;br /&gt;&lt;br /&gt;/* DRAW RANDOM SAMPLE WITH REPLACEMENT FROM DATASET */&lt;br /&gt;proc surveyselect data = &amp;data method = urs&lt;br /&gt; out = &amp;amp;data._tmp n = &amp;sample noprint;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* SUPPRESS OUTPUT OF PROC GLM */&lt;br /&gt;ods exclude all;&lt;br /&gt;&lt;br /&gt;/* MODEL GLM WITHOUT CATEGORICAL VARIABLES */&lt;br /&gt;%if &amp;class = none %then %do;&lt;br /&gt; proc glm data = &amp;data._tmp outstat = model_tmp;&lt;br /&gt;   freq numberhits;&lt;br /&gt;   model &amp;dv = &amp;amp;amp;amp;amp;iv;&lt;br /&gt; run; quit;&lt;br /&gt;%end;&lt;br /&gt;/* MODEL GLM WITH CATEGORICAL VARIABLES */&lt;br /&gt;%else %do;&lt;br /&gt; proc glm data = &amp;data._tmp outstat = model_tmp;&lt;br /&gt;   freq numberhits;&lt;br /&gt;   class &amp;class;&lt;br /&gt;   model &amp;dv = &amp;amp;amp;amp;amp;iv;&lt;br /&gt; run; quit;&lt;br /&gt;%end;&lt;br /&gt;ods exclude none;&lt;br /&gt;&lt;br /&gt;/* INSERT MODEL OUTPUT INTO TABLE glm_result */&lt;br /&gt;proc sql;&lt;br /&gt; insert into glm_result&lt;br /&gt; select _source_ as iv, prob,&lt;br /&gt;case when prob &lt;= 0.01 then 1 else 0 end as sig1, case when prob &gt; 0.01 and prob &lt;= 0.05 then 1 else 0 end as sig2, case when prob &gt; 0.05 and prob &lt;= 0.1 then 1 else 0 end as sig3, case when prob &gt; 0.1 then 1 else 0 end as sig4&lt;br /&gt; from model_tmp&lt;br /&gt; where _type_ in ("SS3");&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;/* END OF LOOP FOR RANDOM SAMPLE */&lt;br /&gt;%end;&lt;br /&gt;&lt;br /&gt;proc summary data = glm_result nway;&lt;br /&gt;class iv;&lt;br /&gt;output out = out_table (drop = _type_ rename = (_freq_ = count))&lt;br /&gt;mean(prob) = prob uclm(prob) = uprob lclm(prob) = lprob&lt;br /&gt;sum(sig1) = sum(sig2) = sum(sig3) = sum(sig4) = ;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* DELETE UNUSEFUL TABLES */&lt;br /&gt;proc datasets library = work nolist;&lt;br /&gt;delete exp_tmp model_tmp glm_result;&lt;br /&gt;run; quit;&lt;br /&gt;&lt;br /&gt;proc sort data = out_table;&lt;br /&gt;by prob;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* REPORT THE FINAL RESULT */&lt;br /&gt;proc report data = out_table nowd headline headskip&lt;br /&gt;split = '*' formchar(2) = '=';&lt;br /&gt;title;&lt;br /&gt;column ("Summary of Variable Importance* *&lt;br /&gt;For General Linear Model* * *&lt;br /&gt;        Dependent Variable: &amp;dv * *"&lt;br /&gt;       iv sig1 sig2 sig3 sig4 count prob uprob lprob);&lt;br /&gt;&lt;br /&gt;define iv / "Independent*Variable" left width = 11;&lt;br /&gt;define sig1 / "# of*1% Sig" center width = 8;&lt;br /&gt;define sig2 / "# of*5% Sig" center width = 8;&lt;br /&gt;define sig3 / "# of*10% Sig" center width = 8;&lt;br /&gt;define sig4 / "# of*Insig" center width = 8;&lt;br /&gt;define count / "Total*Models" center width = 8 format=4.;&lt;br /&gt;define prob / "Average*Prob" center width = 8;&lt;br /&gt;define uprob / "95% UCL*of Prob" center width = 8;&lt;br /&gt;define lprob / "95% LCL*of Prob" center width = 8;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;%mend bootglm;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-114126309005987170?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/114126309005987170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=114126309005987170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114126309005987170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114126309005987170'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/03/sas-macro-of-variables-selection-by.html' title='SAS MACRO OF VARIABLES SELECTION BY BOOTSTRAP (Modelwise)'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-114037854939451454</id><published>2006-02-19T14:47:00.000-05:00</published><updated>2006-03-11T10:49:08.003-05:00</updated><title type='text'>SAS MACRO OF VARIABLES SELECTION BY BOOTSTRAP (Pairwise)</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;%macro biboot(data = , dv = ,iv = , class = none, n = 10);&lt;br /&gt;&lt;br /&gt;/***********************************************************&lt;br /&gt;*                                                          *&lt;br /&gt;* THIS MACRO IS TO BUILD BIVARIATE LINEAR MODEL BETWEEN    *&lt;br /&gt;* DEPENDENT VARIABLE AND INDEPENDENT VARIABLE ONE BY ONE   *&lt;br /&gt;* USING BOOTSTRAP AND EVALUATE THE IMPORTANCE OF EACH      *&lt;br /&gt;* INDEPENDENT VARIABLE                                     *&lt;br /&gt;*                                                          *&lt;br /&gt;************************************************************&lt;br /&gt;*                                                          *&lt;br /&gt;*     EXPLANATION OF THE MACRO                             *&lt;br /&gt;*                                                          *&lt;br /&gt;* data : INPUT DATASET,                                    *&lt;br /&gt;* dv   : DEPENDENT VARIABLE, SAME AS LHS OF MODEL          *&lt;br /&gt;*        STATEMENT IN PROC GLM                             *&lt;br /&gt;* iv   : INDEPENDENT VARIABLES, SAME AS RHS OF MODEL       *&lt;br /&gt;*        STATEMENT IN PROC GLM                             *&lt;br /&gt;* class: CLASS VARIABLES IF NECESSARY, SAME AS INPUT       *&lt;br /&gt;*        VARIABLES OF CLASS STATEMENT IN PROC GLM          *&lt;br /&gt;* n    : NUMBER OF TIMES DRAWING RANDOM SAMPLES WITH       *&lt;br /&gt;*        REPLACEMENT FROM DATASET                          *&lt;br /&gt;*                                                          *&lt;br /&gt;************************************************************&lt;br /&gt;*                                                          *&lt;br /&gt;* AUTHOR: WENSUI LIU (WENSUI.LIU@CCHMC.ORG), 16-FEB-2006   *&lt;br /&gt;*                                                          *&lt;br /&gt;***********************************************************/&lt;br /&gt;&lt;br /&gt;data _null_;&lt;br /&gt;/* SEPARATE EACH INDEPENDENT BY A "+" SIGN */&lt;br /&gt;indep = tranwrd(compbl("&amp;iv"), " ", "+");&lt;br /&gt;/* COUNT # OF INDEPENDENT VARIABLES */&lt;br /&gt;indepn  = count(tranwrd(compbl("&amp;iv"), " ", "+"), "+") + 1;&lt;br /&gt;/* ASSIGN # OF INDEPENDENTS TO A MACRO VARIABLE &amp;indepn */&lt;br /&gt;call symput('indepn', put(indepn, 3.));&lt;br /&gt;/* ASSIGN ALL INDEPENDENTS TO A MACRO VARIABLE &amp;indep */&lt;br /&gt;call symput('indep', indep);&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc sql noprint;&lt;br /&gt;/* CREATE AN EMPTY TABLE TO HOLD OUTPUT OF GLM */&lt;br /&gt;create table glm_result&lt;br /&gt;  (&lt;br /&gt;  iv      char(20),&lt;br /&gt;  df      num,&lt;br /&gt;  f       num,&lt;br /&gt;  prob    num format = 8.4,&lt;br /&gt;  flag    char(5)&lt;br /&gt;  );&lt;br /&gt;/* ASSIGN # OF RECORDS TO A MACRO VARIABLE &amp;sample */&lt;br /&gt;select count(*) into :sample from &amp;amp;amp;data;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;/* START THE LOOP FOR RANDOM SAMPLING FROM DATASET */&lt;br /&gt;%do j = 1 %to &amp;n;&lt;br /&gt;&lt;br /&gt;/* DRAW RANDOM SAMPLE WITH REPLACEMENT FROM DATASET */&lt;br /&gt;proc surveyselect data = &amp;data method = urs&lt;br /&gt;  out = &amp;amp;data._tmp n = &amp;sample seed = &amp;amp;amp;j noprint;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* START THE LOOP FOR EACH INDEPENDENT VARIABLE */&lt;br /&gt;%do i = 1 %to &amp;indepn;&lt;br /&gt;&lt;br /&gt;/* ASSIGN ith INDEPENDENT TO MACRO VARIABLE &amp;variable */&lt;br /&gt;  %let variable = %scan(&amp;amp;amp;indep, &amp;i, +);&lt;br /&gt;&lt;br /&gt;/* SUPPRESS OUTPUT OF PROC GLM */&lt;br /&gt;  ods exclude all;&lt;br /&gt;&lt;br /&gt;/* MODEL GLM WITHOUT CATEGORICAL VARIABLES */&lt;br /&gt;  %if &amp;class = none %then %do;&lt;br /&gt;    proc glm data = &amp;data._tmp outstat = model_tmp;&lt;br /&gt;      freq numberhits;&lt;br /&gt;      model &amp;dv = &amp;amp;amp;amp;variable;&lt;br /&gt;    run; quit;&lt;br /&gt;  %end;&lt;br /&gt;/* MODEL GLM WITH CATEGORICAL VARIABLES */&lt;br /&gt;  %else %do;&lt;br /&gt;    proc glm data = &amp;data._tmp outstat = model_tmp;&lt;br /&gt;      freq numberhits;&lt;br /&gt;      class &amp;class;&lt;br /&gt;      model &amp;dv = &amp;amp;amp;amp;variable;&lt;br /&gt;    run; quit;&lt;br /&gt;  %end;&lt;br /&gt;  ods exclude none;&lt;br /&gt;&lt;br /&gt;/* INSERT MODEL OUTPUT INTO TABLE glm_result */&lt;br /&gt;  proc sql;&lt;br /&gt;    insert into glm_result&lt;br /&gt;    select _source_ as iv, df, f, prob,&lt;br /&gt;      case&lt;br /&gt;when prob &lt;= 0.01 then "sig1" when prob &gt; 0.01 and prob &lt;= 0.05 then "sig2" when prob &gt; 0.05 and prob &lt;= 0.1 then "sig3" else "sig4" end as flag from model_tmp where _type_ in ("SS1"); quit; /* END OF LOOP FOR VARIABLES */ %end; /* END OF LOOP FOR RANDOM SAMPLE */ %end; proc sql; /* COUNT # OF SIGNIFICANT MODELS FOR EACH INDEPENDENTS */ create table out_table as select iv, sum(case when flag = "sig1" then 1 else 0 end) as sig1, sum(case when flag = "sig2" then 1 else 0 end) as sig2, sum(case when flag = "sig3" then 1 else 0 end) as sig3, sum(case when flag = "sig4" then 1 else 0 end) as sig4, count(*) as total from glm_result group by iv; quit; /* DELETE UNUSEFUL DATASETS */ proc datasets library = work nolist; delete &amp;data._tmp model_tmp glm_result; quit; /* SORT THE TABLE BY COUNTS OF SIGNIFICANCE */ proc sort data = out_table; by descending sig1 descending sig2 descending sig3 descending sig4; run; /* REPORT THE FINAL RESULT */ proc report data = out_table nowd headline headskip split = '*' formchar(2) = '='; title; column ("Summary of Variable Importance* * Based on Bivariate General Linear Model* * * Dependent Variable: &amp;dv * *" iv sig1 sig2 sig3 sig4 total); define iv / "Independent*Variable" left; define sig1 / "Count of*1% Sig" center width = 10; define sig2 / "Count of*5% Sig" center width = 10; define sig3 / "Count of*10% Sig" center width = 10; define sig4 / "Count of*Insig" center width = 10; define total / "Count of*Total Models" center width = 20; run; %mend biboot; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-114037854939451454?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/114037854939451454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=114037854939451454' title='43 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114037854939451454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114037854939451454'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/02/sas-macro-of-variables-selection-by.html' title='SAS MACRO OF VARIABLES SELECTION BY BOOTSTRAP (Pairwise)'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>43</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-114013255293236735</id><published>2006-02-16T18:28:00.000-05:00</published><updated>2006-03-11T10:49:55.013-05:00</updated><title type='text'>SAS MACRO OF PAIRWISE VARIABLES SELECTION IN GLM</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;%macro biglm(data = , dv = ,iv = , class = none);&lt;br /&gt;&lt;br /&gt;/***************************************************************************&lt;br /&gt;* THIS MACRO WILL DO A BIVARIATE GENERAL LINEAR MODEL BETWEEN DEPENDENT    *&lt;br /&gt;* VARIABLE AND INDEPENDENT VARIABLES ONE BY ONE, COMPUTE F VALUE AND ITS   *&lt;br /&gt;* PROBABILITY, FLAG OUT SIGNIFICANT VARIABLES, AND SORT ALL VARIABLES BY   *&lt;br /&gt;* THEIR F-VALUES FROM HIGH TO LOW.                                         *&lt;br /&gt;* IT CAN BE USED TO SELECT IMPORTANT VARIABLES IN A GENERAL LINEAR MODEL   *&lt;br /&gt;*                                                                          *&lt;br /&gt;****************************************************************************&lt;br /&gt;*                                                                          *&lt;br /&gt;*       EXPLANATION OF THIS MACRO                                          *&lt;br /&gt;*                                                                          *&lt;br /&gt;* DATA : INPUT DATASET,                                                    *&lt;br /&gt;* DV   : DEPENDENT VARIABLE, SAME AS LHS OF MODEL STATEMENT IN PROC GLM    *&lt;br /&gt;* IV   : INDEPENDENT VARIABLES, SAME AS RHS OF MODEL STATEMENT IN PROC GLM *&lt;br /&gt;* CLASS: CLASS VARIABLES IF NECESSARY, SAME AS INPUT VARIABLES OF CLASS    *&lt;br /&gt;*        STATEMENT IN PROC GLM                                             *&lt;br /&gt;*                                                                          *&lt;br /&gt;****************************************************************************&lt;br /&gt;* AUTHOR: WENSUI LIU (WENSUI.LIU@CCHMC.ORG), 16-FEB-2006                   *&lt;br /&gt;***************************************************************************/&lt;br /&gt;&lt;br /&gt;data _null_;&lt;br /&gt; iv2 = tranwrd(compbl("&amp;iv"), " ", "+");&lt;br /&gt; n = count(tranwrd(compbl("&amp;iv"), " ", "+"), "+") + 1;&lt;br /&gt; call symput('n', put(n, 3.));&lt;br /&gt; call symput('iv2', iv2);&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc sql;&lt;br /&gt;create table result&lt;br /&gt; (&lt;br /&gt; iv char(20),&lt;br /&gt; df        num,&lt;br /&gt; fvalue    num,&lt;br /&gt; probf     num format = 8.4,&lt;br /&gt; flag      char(5)&lt;br /&gt; );&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;%do i = 1 %to &amp;n;&lt;br /&gt;&lt;br /&gt; %let v = %scan(&amp;iv2, &amp;amp;amp;i, +);&lt;br /&gt; %put &amp;v;&lt;br /&gt;&lt;br /&gt; ods output ModelANOVA = model_tmp1&lt;br /&gt; (where = (HypothesisType = 1));&lt;br /&gt;&lt;br /&gt; ods listing close;&lt;br /&gt; %if &amp;class = none %then %do;&lt;br /&gt;   proc glm data = &amp;data;&lt;br /&gt;     model &amp;dv = &amp;amp;amp;v;&lt;br /&gt;   run; quit;&lt;br /&gt; %end;&lt;br /&gt; %else %do;&lt;br /&gt;   proc glm data = &amp;data;&lt;br /&gt;     class &amp;class;&lt;br /&gt;     model &amp;dv = &amp;amp;amp;v;&lt;br /&gt;   run; quit;&lt;br /&gt; %end;&lt;br /&gt; ods listing;&lt;br /&gt;&lt;br /&gt; proc sql;&lt;br /&gt;   insert into result&lt;br /&gt;   select&lt;br /&gt;     source as iv, df, fvalue, probf,&lt;br /&gt;     case&lt;br /&gt;when probf &lt;= 0.01 then "***" when probf &gt; 0.01 and probf &lt;= 0.05 then "**" when probf &gt; 0.05 and probf &lt;= 0.1 then "*" else "" end as flag from model_tmp1; quit; %end; proc sort data = result; by probf; run; proc report data = result nowd headline center headskip split = '*' formchar(2) = '='; title; column ("Summary of Variable Importance* *Based on Bivariate General Linear Model* * * Dependent Variable: &amp;dv * *" iv df fvalue probf flag); define iv / "Independent*Variable" center; define df / "Degree of*Freedom" center; define fvalue / "F Value" format = 12.2 center; define probf / "Pr &gt; F" center;&lt;br /&gt; define flag / " ";&lt;br /&gt; compute after;&lt;br /&gt;   line " ";&lt;br /&gt;   line "***:  1% Significance Level";&lt;br /&gt;   line "** :  5% Significance Level";&lt;br /&gt;   line "*  : 10% Significance Level";&lt;br /&gt; endcomp;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;%mend;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-114013255293236735?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/114013255293236735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=114013255293236735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114013255293236735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/114013255293236735'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/02/sas-macro-of-pairwise-variables.html' title='SAS MACRO OF PAIRWISE VARIABLES SELECTION IN GLM'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113707577780823221</id><published>2006-01-12T09:22:00.000-05:00</published><updated>2006-01-12T09:25:01.640-05:00</updated><title type='text'>HIGHLIGHT VALUES IN A REPORT USING SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;********************************&lt;br /&gt;* HIGHLIGHT VALUES IN A REPORT *&lt;br /&gt;* USING PROC REPORT OF SAS     *&lt;br /&gt;* DATE: 12JAN, 2006            *&lt;br /&gt;********************************;&lt;br /&gt;&lt;br /&gt;/* SIMULATE RANDOM NUMBERS */&lt;br /&gt;data one;&lt;br /&gt;do i = 1 to 10;&lt;br /&gt;  id = put(i, z3.);&lt;br /&gt;  x = rannor(1);&lt;br /&gt;  output;&lt;br /&gt;end;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* DELIVER THE REPORT TO EXCEL FILE BY ODS */&lt;br /&gt;ods html body = 'c:\test.xls' style = minimal;&lt;br /&gt;&lt;br /&gt;proc report data = one nowd headline split = "*";&lt;br /&gt;title;&lt;br /&gt;column("THIS IS*A TEST" id x);&lt;br /&gt;&lt;br /&gt;define id / "ID"&lt;br /&gt;  style = {font_weight = bold htmlstyle = "vnd.ms-excel.numberformat:@"};&lt;br /&gt;define x / 'RANDOM*NUMBER' format = 4.2&lt;br /&gt;  style = {htmlstyle = "vnd.ms-excel.numberformat:0.00"};&lt;br /&gt;&lt;br /&gt;/* HIGHLIGHT EXTREME VALUES */&lt;br /&gt;compute x;&lt;br /&gt;  if _c2_ &gt;= 1 then do;&lt;br /&gt;    call define(_col_, "style",&lt;br /&gt;               "style = [background = red foreground = green font_weight = bold");&lt;br /&gt;  end;&lt;br /&gt;else if _c2_ &lt;= 0 then do; call define(_col_, "style", "style = [background = green foreground = red font_weight = bold");&lt;br /&gt;end;&lt;br /&gt;endcomp;&lt;br /&gt;run;&lt;br /&gt;ods html close;&lt;br /&gt;***************&lt;br /&gt;* END OF CODE *&lt;br /&gt;***************;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113707577780823221?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113707577780823221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113707577780823221' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113707577780823221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113707577780823221'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2006/01/highlight-values-in-report-using-sas.html' title='HIGHLIGHT VALUES IN A REPORT USING SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113600912316629791</id><published>2005-12-31T01:04:00.000-05:00</published><updated>2006-03-16T19:06:14.350-05:00</updated><title type='text'>INTERACT R WITH SQLITE USING RSQLITE</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;##################################################&lt;br /&gt;# INTERACT R WITH SQLITE USING RSQLITE #&lt;br /&gt;# DATE : DEC-31, 2005 #&lt;br /&gt;##################################################&lt;br /&gt;&lt;br /&gt;# LOAD LIBRARIES AND DATA FRAME&lt;br /&gt;library(DBI);&lt;br /&gt;library(RSQLite);&lt;br /&gt;library(Hmisc);&lt;br /&gt;data(iris);&lt;br /&gt;&lt;br /&gt;# SET WORKING DIRECTORY&lt;br /&gt;setwd('f:\\application\\sqlite');&lt;br /&gt;&lt;br /&gt;# CRATE A SQLITE DATABASE NAMED IRIS.DB&lt;br /&gt;shell('sqlite3 iris.db');&lt;br /&gt;&lt;br /&gt;# DEFINE DATABASE DRIVER&lt;br /&gt;driver&lt;-dbDriver("SQLite"); &lt;br /&gt;&lt;br /&gt;# DEFINE CONNECTION TO IRIS.DB&lt;br /&gt;connect&lt;-dbConnect(driver, dbname = "iris.db"); &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;# WRITE IRIS DATA FRAME INTO TABLE TBL_IRIS OF DATABASE &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;dbWriteTable(connect, "tbl_iris", iris, overwrite = T, row.names = F&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;, eol = "\r\n"&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;span style="font-family: courier new;"&gt; );  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;# LIST ALL TABLES IN THE DATABASE&lt;br /&gt;dbListTables(connect);&lt;br /&gt;&lt;br /&gt;# QUERY DATA AGAINST TBL_IRIS IN THE DATABASE&lt;br /&gt;query01&lt;-dbSendQuery(connect, statement = "select * from tbl_iris"); &lt;br /&gt;&lt;br /&gt;# FETCH 10 RECORDS OF DATA INTO A DATA FRAME&lt;br /&gt;data01&lt;-fetch(query01, n = 10); &lt;br /&gt;&lt;br /&gt;# PRINT CONTENTS OF DATA FRAME&lt;br /&gt;contents(data01); &lt;br /&gt;&lt;br /&gt;# CLOSE THE QUERY&lt;br /&gt;sqliteCloseResult(query01);&lt;br /&gt;&lt;br /&gt;# CLOSE THE CONNECTION&lt;br /&gt;sqliteCloseConnection(connect);&lt;br /&gt;&lt;br /&gt;# CLOSE THE DRIVER&lt;br /&gt;sqliteCloseDriver(driver);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113600912316629791?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113600912316629791/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113600912316629791' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113600912316629791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113600912316629791'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/12/interact-r-with-sqlite-using-rsqlite.html' title='INTERACT R WITH SQLITE USING RSQLITE'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113597653007438459</id><published>2005-12-30T16:01:00.000-05:00</published><updated>2005-12-30T16:02:10.090-05:00</updated><title type='text'>READ DATA FROM CONSOLE OF R USING SCAN()</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;##################################################&lt;br /&gt;# READ DATA INTO DATA FRAME FROM CONSOLE IN R #&lt;br /&gt;# DATE : DEC-30, 2005 #&lt;br /&gt;##################################################&lt;br /&gt;# EQUIVALENT SAS CODE:&lt;br /&gt;# data person;&lt;br /&gt;#   infile cards firstobs = 2;&lt;br /&gt;#   input name $ dept $ salary;&lt;br /&gt;#   cards;&lt;br /&gt;# this is a test&lt;br /&gt;# John Sales 78000&lt;br /&gt;# Mary Acct 50000&lt;br /&gt;# ;&lt;br /&gt;# run;&lt;br /&gt;##################################################&lt;br /&gt;&lt;br /&gt;# PRINT DATA INTO A FILE&lt;br /&gt;cat("this is a test", "John Sales 78000", "Mary Acct 50000", file = "person.data", sep = "\n");&lt;br /&gt;&lt;br /&gt;# READ DATA FROM FILE USING SCAN()&lt;br /&gt;person&lt;-data.frame(scan(file = "person.data", what = list(name = character(), dept = character(), salary = numeric()), skip = 1));&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113597653007438459?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113597653007438459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113597653007438459' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113597653007438459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113597653007438459'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/12/read-data-from-console-of-r-using-scan.html' title='READ DATA FROM CONSOLE OF R USING SCAN()'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113592429504163037</id><published>2005-12-30T01:27:00.000-05:00</published><updated>2005-12-30T14:23:17.330-05:00</updated><title type='text'>SUBSET DATA FRAME IN R</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;##################################################&lt;br /&gt;# METHODS TO SUBSET A DATA FRAME IN R #&lt;br /&gt;# DATE : DEC-30, 2005 #&lt;br /&gt;##################################################&lt;br /&gt;&lt;br /&gt;# LOAD HMISC LIBRARY&lt;br /&gt;library(Hmisc);&lt;br /&gt;&lt;br /&gt;# PULL IRIS DATA&lt;br /&gt;data(iris);&lt;br /&gt;# SUMMARIZE IRIS DATA&lt;br /&gt;summary(iris);&lt;br /&gt;&lt;br /&gt;# 1ST METHOD TO SUBSET IRIS DATA&lt;br /&gt;iris.subset01&lt;-iris[iris$Species=="setosa" &amp; iris$Sepal.Length&gt;=5,];&lt;br /&gt;# SUMMARIZE THE SUBSET&lt;br /&gt;summary(iris.subset01);&lt;br /&gt;&lt;br /&gt;# 2ND METHOD TO SUBSET IRIS DATA&lt;br /&gt;iris.subset02&lt;-subset(iris, Species=="virginica" &amp; Petal.Width&lt;=2); # SUMMARIZE THE SUBSET summary(iris.subset02);&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113592429504163037?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113592429504163037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113592429504163037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113592429504163037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113592429504163037'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/12/subset-data-frame-in-r.html' title='SUBSET DATA FRAME IN R'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113445272558593451</id><published>2005-12-13T00:44:00.000-05:00</published><updated>2005-12-13T00:45:25.600-05:00</updated><title type='text'>CALCULATE GROUP SUMMARY IN R</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;##################################################&lt;br /&gt;# HOW TO CALCULATE GROUP SUMMARY IN R            #&lt;br /&gt;# DATE : DEC-13, 2005                            #&lt;br /&gt;##################################################&lt;br /&gt;# EQUIVALENT SAS CODE:                           #&lt;br /&gt;#                                                #&lt;br /&gt;# DATA DATA;                                     #&lt;br /&gt;# DO I = 1 TO 2;                                 #&lt;br /&gt;#   DO J = 1 TO 4;                               #&lt;br /&gt;#     GROUP = 'TREATMENT_'||PUT(I, 1.);          #&lt;br /&gt;#     X = RANNOR(1);                             #&lt;br /&gt;#     OUTPUT;                                    #&lt;br /&gt;#   END;                                         #&lt;br /&gt;# END;                                           #&lt;br /&gt;# KEEP GROUP X;                                  #&lt;br /&gt;# RUN;                                           #&lt;br /&gt;#                                                #&lt;br /&gt;# PROC SQL;                                      #&lt;br /&gt;# CREATE TABLE COMBINE AS                        #&lt;br /&gt;# SELECT *, MEAN(X) AS MEAN_X, SUM(X) AS SUM_X   #&lt;br /&gt;# FROM DATA                                      #&lt;br /&gt;# GROUP BY GROUP;                                #&lt;br /&gt;# QUIT;                                          #&lt;br /&gt;##################################################&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# GENERATE A TREATMENT GROUP #&lt;br /&gt;group&lt;-as.factor(paste("treatment", rep(1:2, 4), sep = '_'));&lt;br /&gt;&lt;br /&gt;# CREATE A SERIES OF RANDOM VALUES #&lt;br /&gt;x&lt;-rnorm(length(group));&lt;br /&gt;&lt;br /&gt;# CREATE A DATA FRAME TO COMBINE THE ABOVE TWO #&lt;br /&gt;data&lt;-data.frame(group, x);&lt;br /&gt;&lt;br /&gt;# CALCULATE SUMMARY FOR X #&lt;br /&gt;x.mean&lt;-tapply(data$x, data$group, mean, na.rm = T);&lt;br /&gt;x.sum&lt;-tapply(data$x, data$group, sum, na.rm = T);&lt;br /&gt;&lt;br /&gt;# CREATE A DATA FRAME TO COMBINE SUMMARIES #&lt;br /&gt;summ&lt;-data.frame(x.mean, x.sum, group = names(x.mean));&lt;br /&gt;&lt;br /&gt;# COMBINE DATA AND SUMMARIES TOGETHER #&lt;br /&gt;combine&lt;-merge(data, summ, by = "group");&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113445272558593451?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113445272558593451/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113445272558593451' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113445272558593451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113445272558593451'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/12/calculate-group-summary-in-r.html' title='CALCULATE GROUP SUMMARY IN R'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113418744990156734</id><published>2005-12-09T23:02:00.000-05:00</published><updated>2005-12-13T00:58:59.760-05:00</updated><title type='text'>OUTPUT DATA BASED ON ARBITRARY VALUES OF INDEX VARIABLE IN SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;***********************************************************&lt;br /&gt;* OUTPUT DIFFERENT DATA SETS BASED ON ARBITRARY *&lt;br /&gt;* VALUES OF ONE VARIABLE IN THE TABLE                     *&lt;br /&gt;* DATE: 09-DEC-2005                                       *&lt;br /&gt;***********************************************************;&lt;br /&gt;&lt;br /&gt;/* SIMULATE SAMPLE DATA */&lt;br /&gt;data one;&lt;br /&gt;do i = 1 to 10;&lt;br /&gt; do n = 1 to 5;&lt;br /&gt; x = rannor(1);&lt;br /&gt; output;&lt;br /&gt; end;&lt;br /&gt;end;&lt;br /&gt;keep i x;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* CREATE A MACRO TO OUTPUT TABLES */&lt;br /&gt;%macro slice(in =, out = , var = );&lt;br /&gt;* in : name of input table       *&lt;br /&gt;* out: name of output table      *&lt;br /&gt;* var: variable to output tables *;&lt;br /&gt;&lt;br /&gt;data data_&amp;out;&lt;br /&gt; set &amp;in;&lt;br /&gt; where &amp;var = &amp;amp;amp;out;&lt;br /&gt;run;&lt;br /&gt;%mend slice;&lt;br /&gt;&lt;br /&gt;proc sort data = one;&lt;br /&gt;by i;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* FINAL STEP TO OUTPUT TABLES */&lt;br /&gt;data _null_;&lt;br /&gt;set one;&lt;br /&gt;by i;&lt;br /&gt;if first.i then call execute ('%slice(in = one, out = '||i||', var = i)');&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;***********************************************************&lt;br /&gt;* END OF CODE                                             *&lt;br /&gt;***********************************************************;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113418744990156734?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113418744990156734/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113418744990156734' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113418744990156734'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113418744990156734'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/12/output-data-based-on-arbitrary-values.html' title='OUTPUT DATA BASED ON ARBITRARY VALUES OF INDEX VARIABLE IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113384228423034501</id><published>2005-12-05T23:07:00.000-05:00</published><updated>2005-12-13T00:59:37.900-05:00</updated><title type='text'>ENTER DATA USING INPUT COMMEND IN STATA</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;/*&lt;br /&gt;EQUIVALENT SAS CODE FOR THE FOLLOWING STATA COMMANDS:&lt;br /&gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;data person;&lt;br /&gt;input name $ dept $;&lt;br /&gt;datalines;&lt;br /&gt;John Sales&lt;br /&gt;Mary Acctng&lt;br /&gt;;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc print data = person;&lt;br /&gt;var name dept;&lt;br /&gt;run;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;*/&lt;br /&gt;&lt;br /&gt;clear&lt;br /&gt;cd c:\temp&lt;br /&gt;log using mylog.log, replace&lt;br /&gt;input str10 name str10 dept&lt;br /&gt;John Sales&lt;br /&gt;Mary Acctng&lt;br /&gt;end&lt;br /&gt;save person, replace&lt;br /&gt;list dept name&lt;br /&gt;log close&lt;br /&gt;view mylog.log&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113384228423034501?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113384228423034501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113384228423034501' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113384228423034501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113384228423034501'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/12/enter-data-using-input-commend-in.html' title='ENTER DATA USING INPUT COMMEND IN STATA'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-113218485214293063</id><published>2005-11-16T18:45:00.000-05:00</published><updated>2005-11-16T18:47:32.153-05:00</updated><title type='text'>HOW TO RENAME MANY VARIABLES IN SAS</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;************************************************&lt;br /&gt;* THIS CODE SHOWS HOW TO RENAME MANY VARIABLES *&lt;br /&gt;* DATE: 11/16/2005                             *&lt;br /&gt;************************************************;&lt;br /&gt;&lt;br /&gt;data one;&lt;br /&gt;input a b c d e f g h i j;&lt;br /&gt;cards;&lt;br /&gt;1 2 3 4 5 6 7 8 9 10&lt;br /&gt;;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ods listing close;&lt;br /&gt;ods output position = list;&lt;br /&gt;proc contents data = one varnum;&lt;br /&gt;run;&lt;br /&gt;ods listing;&lt;br /&gt;&lt;br /&gt;proc sql noprint;&lt;br /&gt;select put(max(num), 2.) into :num from list;&lt;br /&gt;select variable into :var1-:var&amp;num from list;&lt;br /&gt;select "rename_"||variable into :new1-:new&amp;num from list;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;%macro rename;&lt;br /&gt;&lt;br /&gt;proc datasets lib = work;&lt;br /&gt;  modify one;&lt;br /&gt;  rename&lt;br /&gt;  %do i = 1 %to &amp;num.;&lt;br /&gt;    &amp;&amp;amp;var&amp;i = &amp;amp;&amp;new&amp;amp;i.&lt;br /&gt;  %end;&lt;br /&gt;  ;&lt;br /&gt;run;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;%mend rename;&lt;br /&gt;&lt;br /&gt;%rename;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-113218485214293063?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/113218485214293063/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=113218485214293063' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113218485214293063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/113218485214293063'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/11/how-to-rename-many-variables-in-sas.html' title='HOW TO RENAME MANY VARIABLES IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112801056400266609</id><published>2005-09-29T12:15:00.000-04:00</published><updated>2005-09-29T12:16:04.013-04:00</updated><title type='text'>READ MULTIPLE EXCEL FILES IN SAS USING MACRO</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;*************************************************&lt;br /&gt;* READ ALL EXCEL FILES WITH SAME STRUCTURE      *&lt;br /&gt;* FROM A FOLDER INTO SAS USING MACRO            *&lt;br /&gt;* DATE: SEP-29, 2005                            *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;%macro ReadXls(dir = , out = );&lt;br /&gt;*************************************************&lt;br /&gt;* MACRO PARAMETERS:                             *&lt;br /&gt;* DIR: FOLDER WHERE DATA IS STORED              *&lt;br /&gt;* OUT: NAME OF OUTPUT DATA TABLE                *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;/* DELETE TABLE WITH SAME NAME AS OUTPUT DATA */&lt;br /&gt;proc datasets;&lt;br /&gt;  delete &amp;out;&lt;br /&gt;run;&lt;br /&gt;quit;&lt;br /&gt; &lt;br /&gt;/* MANIPULATION THE STRING OF FOLDER PATH */&lt;br /&gt;data _null_;&lt;br /&gt;  dir1 = '"'||symget('dir')||'\"';&lt;br /&gt;  dir21 = "'dir "||tranwrd(dir1, '\"', '\*.xls"');&lt;br /&gt;  dir22 = " /b'";&lt;br /&gt;  dir2 = compbl(dir21||dir22);&lt;br /&gt;/* PASS THE STRINGS TO MACRO VARIABLES */ &lt;br /&gt;  call symput('dir1', dir1);&lt;br /&gt;  call symput('dir2', dir2);&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* DEFINE A PIPE */&lt;br /&gt;filename Excel pipe &amp;dir2;&lt;br /&gt;&lt;br /&gt;/* GET A LIST OF FILES IN THE FOLDER */&lt;br /&gt;data File;&lt;br /&gt;  infile Excel truncover end = last;&lt;br /&gt;  input Name $20.;&lt;br /&gt;  Path = compbl(&amp;dir1||Name);&lt;br /&gt;  i + 1;&lt;br /&gt;  index = compress('file'||put(i, 2.), ' ');&lt;br /&gt;/* GET THE NUMBER OF FILES */ &lt;br /&gt;  if last then call symput('last', put(i, 2.));&lt;br /&gt;/* PASS THE FILES PATH TO MACRO VARIABLES */&lt;br /&gt;  call symput(index, Path);&lt;br /&gt;  drop Name i;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* LOOP THROUGH THE FILES */&lt;br /&gt;%do i = 1 %to &amp;Last;&lt;br /&gt;  %put &amp;&amp;amp;file&amp;i;&lt;br /&gt;/* READ DATA FROM EXCEL FILES */&lt;br /&gt;  proc import datafile = "&amp;&amp;amp;file&amp;i" out = temp1 dbms = excel2000 replace;&lt;br /&gt;    range = 'Sheet1$';&lt;br /&gt;    getnames = yes;&lt;br /&gt;  run;&lt;br /&gt;/* ADD A FIELD FOR IMPORTED FILE NAME */&lt;br /&gt;  data temp2;&lt;br /&gt;    set temp1;&lt;br /&gt;    from = "&amp;&amp;amp;file&amp;i";&lt;br /&gt;  run;&lt;br /&gt;/* APPEND DATA FROM EACH EXCEL TO A MAIN TABLE */&lt;br /&gt;  %if &amp;i = 1 %then %do;&lt;br /&gt;    data &amp;out;&lt;br /&gt;      set temp2;&lt;br /&gt;    run;&lt;br /&gt;  %end;&lt;br /&gt;  %else %do;&lt;br /&gt;    data &amp;out;&lt;br /&gt;      set &amp;out temp2;&lt;br /&gt;    run;&lt;br /&gt;  %end;&lt;br /&gt;%end;&lt;br /&gt;&lt;br /&gt;%mend ReadXls;&lt;br /&gt;/* END OF MACRO */&lt;br /&gt;&lt;br /&gt;/* CALL THE MACRO */&lt;br /&gt;%ReadXls(dir = C:\temp, out = fromExcel);&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112801056400266609?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112801056400266609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112801056400266609' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112801056400266609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112801056400266609'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/09/read-multiple-excel-files-in-sas-using.html' title='READ MULTIPLE EXCEL FILES IN SAS USING MACRO'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112793935631556609</id><published>2005-09-28T16:28:00.000-04:00</published><updated>2005-09-28T16:29:16.323-04:00</updated><title type='text'>READ MULTIPLE FILES USING PIPE IN SAS</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;*************************************************&lt;br /&gt;* READ ALL FILES IN A FOLDER INTO SAS           *&lt;br /&gt;* USING OPERATING SYSTEM PIPE                   *&lt;br /&gt;* DATE: 28-SEP, 2005                            *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;SAMPLE DATA IN 4 FILES WITH UNKNOWN NAMES&lt;br /&gt;12011997 M 09/08/04&lt;br /&gt;12011997 F 01/26/01&lt;br /&gt;...&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;/* USE PIPE TO RETURN A LIST OF FILENAMES */&lt;br /&gt;filename indata pipe 'dir "C:\temp" /b';&lt;br /&gt;&lt;br /&gt;data File Data;&lt;br /&gt;  format path $100.;&lt;br /&gt;/* OPEN A PIPE FOR INPUT */&lt;br /&gt;  infile indata truncover;&lt;br /&gt;/* INPUT FILE NAMES */&lt;br /&gt;  input file $20.;&lt;br /&gt;/* SPECIFY FULL PATH OF FILES */&lt;br /&gt;  path = 'C:\temp\'||file;&lt;br /&gt;  put path;&lt;br /&gt;&lt;br /&gt;/* OPEN EACH FILE */&lt;br /&gt;  infile dummy filevar = path end = done truncover;&lt;br /&gt;  do while(not done);&lt;br /&gt;/* INPUT DATA IN THE FILE */&lt;br /&gt;    input Account $ 1-8 Sex $ 10-10 Date mmddyy8.;&lt;br /&gt;    format Date Date.;&lt;br /&gt;    output;&lt;br /&gt;  end;&lt;br /&gt;run;&lt;br /&gt; &lt;br /&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112793935631556609?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112793935631556609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112793935631556609' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112793935631556609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112793935631556609'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/09/read-multiple-files-using-pipe-in-sas.html' title='READ MULTIPLE FILES USING PIPE IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112777283763008728</id><published>2005-09-26T18:12:00.000-04:00</published><updated>2005-09-26T18:13:57.636-04:00</updated><title type='text'>DIRECT SAS OUTPUT TO LOG WINDOW</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;*************************************************&lt;br /&gt;* WRITE SAS OUTPUT TO LOG WINDOW INSTEAD OF     *&lt;br /&gt;* LIST WINDOW USING CATALOG                     *&lt;br /&gt;* DATE: SEP-26, 2005                            *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;options nodate pageno= 1;&lt;br /&gt;data one (drop = n);&lt;br /&gt;  do i = 1 to 2;&lt;br /&gt;    do n = 1 to 10;&lt;br /&gt;      number = rannor(1);&lt;br /&gt;      output;&lt;br /&gt;    end;&lt;br /&gt;  end;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* ASSIGN AN OUTPUT FILE IN CATALOG */&lt;br /&gt;filename OUT catalog 'work.catalog.out.output';&lt;br /&gt;&lt;br /&gt;/* SEND OUTPUT TO FILE IN CATALOG */&lt;br /&gt;proc printto print = OUT new;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* THINGS TO PRINT OUT */&lt;br /&gt;proc print data = one;&lt;br /&gt;  var i number;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc means data = one n mean std;&lt;br /&gt;  var number;&lt;br /&gt;  class i;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* STOP SENDING OUTPUT */&lt;br /&gt;proc printto;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* READ FILE IN CATALOG AND PUT IT IN LOG WINDOW */&lt;br /&gt;data _null_;&lt;br /&gt;  infile OUT;&lt;br /&gt;  input;&lt;br /&gt;  put _infile_;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112777283763008728?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112777283763008728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112777283763008728' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112777283763008728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112777283763008728'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/09/direct-sas-output-to-log-window.html' title='DIRECT SAS OUTPUT TO LOG WINDOW'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112707872181263706</id><published>2005-09-18T17:22:00.000-04:00</published><updated>2005-09-21T22:38:46.003-04:00</updated><title type='text'>CLASSIFICATION MODEL USING PARTIAL LEAST SQUARES IN SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;*************************************************&lt;br /&gt;* CLASSIFICATION OF IRIS DATA USING PROC PLS    *&lt;br /&gt;* 18-SEP, 2005                                  *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;data iris;&lt;br /&gt;input SepalLength SepalWidth PetalLength PetalWidth Species @@;&lt;br /&gt;Setosa = (Species = 1);&lt;br /&gt;Versicolor = (Species = 2);&lt;br /&gt;Virginica = (Species = 3);&lt;br /&gt;datalines;&lt;br /&gt;50 33 14 02 1 64 28 56 22 3 65 28 46 15 2 67 31 56 24 3&lt;br /&gt;63 28 51 15 3 46 34 14 03 1 69 31 51 23 3 62 22 45 15 2&lt;br /&gt;... ...&lt;br /&gt;;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* SELECT THE BEST NUMBER OF FACTORS USING CROSS-VALIDATION */&lt;br /&gt;proc pls data = iris&lt;br /&gt; method = pls details cv = split(3) cvtest (seed = 1);&lt;br /&gt; model Setosa Versicolor Virginica = SepalLength SepalWidth PetalLength PetalWidth;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* FINAL PLS MODEL OF IRIS CLASSIFICATION */&lt;br /&gt;ods listing close;&lt;br /&gt;/* OUTPUT LOADINGS OF FACTORS FOR IVs*/&lt;br /&gt;ods output XLoadings = xloadings_temp1;&lt;br /&gt;proc pls data = iris method = pls nfac = 3 details;&lt;br /&gt; model Setosa Versicolor Virginica = SepalLength SepalWidth PetalLength PetalWidth;&lt;br /&gt; output out = pred_temp&lt;br /&gt;   p = p_Setosa p_Versicolor p_Virginica&lt;br /&gt;   xscore = Xscore;&lt;br /&gt;run;&lt;br /&gt;ods listing;&lt;br /&gt;&lt;br /&gt;/* CALCULATE PREDICTED SPECIES */&lt;br /&gt;data pred_iris;&lt;br /&gt; set pred_temp;&lt;br /&gt; format p_Species $10.;&lt;br /&gt; if p_Setosa = max(p_Setosa, p_Versicolor, p_Virginica)&lt;br /&gt;   then p_Species = 'Setosa';&lt;br /&gt; else if p_Versicolor = max(p_Setosa, p_Versicolor, p_Virginica)&lt;br /&gt;   then p_Species = 'Versicolor';&lt;br /&gt; else if p_Virginica = max(p_Setosa, p_Versicolor, p_Virginica)&lt;br /&gt;   then p_Species = 'Virginica';&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* CALCULATE MISCLASSIFICATION RATE */&lt;br /&gt;proc freq data = pred_iris;&lt;br /&gt; tables Species * p_Species;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* PLOT LOADINGS OF FACTORS VS. IVs */&lt;br /&gt;proc transpose data = xloadings_temp1&lt;br /&gt; out =xloadings_temp2 (where = (_name_ ~= 'NumberOfFactors'));&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;data xloadings;&lt;br /&gt; set xloadings_temp2;&lt;br /&gt; drop _label_;&lt;br /&gt; rename col1=Factor1 col2=Factor2&lt;br /&gt;        col3=Factor3 _name_ = Variable;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc sort data = xloadings;&lt;br /&gt; by Variable;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;/* PLOT FACTOR LOADINGS ACROSS VARIABLES */&lt;br /&gt;goptions reset = global device = bmp border;&lt;br /&gt;axis1 label = (font = courier "Loading")&lt;br /&gt;     order = (-0.6 to 1 by 0.2)&lt;br /&gt;     minor = none&lt;br /&gt;     value = (font = courier);&lt;br /&gt;axis2 label = (font = courier "Variable")&lt;br /&gt;     minor = none&lt;br /&gt;     value = (font = courier);&lt;br /&gt;symbol1 i = join c = red l = 1 v = dot h = 0.5;&lt;br /&gt;symbol2 i = join c = green l = 1 v = dot h = 0.5;&lt;br /&gt;symbol3 i = join c = blue l = 1 v = dot h = 0.5;&lt;br /&gt;legend1 label = none cborder = black value = (font = courier);&lt;br /&gt;&lt;br /&gt;title h = 2 c = red font = courier 'Factor Loadings Across Variables';&lt;br /&gt;proc gplot data = xloadings;&lt;br /&gt; plot (Factor1 Factor2 Factor3) * Variable&lt;br /&gt; / overlay legend = legend1 vaxis = axis1&lt;br /&gt;   haxis = axis2 frame cframe = ligr vref = 0;&lt;br /&gt;run;&lt;br /&gt;quit;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/PLS_xloading1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/PLS_xloading1.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;/* PLOT SPECIES ON FIRST 2 FACTORS */&lt;br /&gt;goptions reset = global device = bmp border;&lt;br /&gt;axis2 label = (font = courier '1st Factor')&lt;br /&gt;     value = (font = courier);&lt;br /&gt;axis1 label = (font = courier '2nd Factor')&lt;br /&gt;     value = (font = courier);&lt;br /&gt;symbol1 i = none c = green l = 1 v = circle h = 0.5;&lt;br /&gt;symbol2 i = none c = red l = 1 v = dot h = 0.5;&lt;br /&gt;symbol3 i = none c = blue l = 1 v = square h = 0.5;&lt;br /&gt;legend1 label = none cborder = black value = (font = courier);&lt;br /&gt;&lt;br /&gt;title h = 2 c = blue font = courier&lt;br /&gt; 'Predicted Species on First 2 Factors';&lt;br /&gt;proc gplot data = Pred_iris;&lt;br /&gt; plot Xscore2 * Xscore1 = p_Species&lt;br /&gt; / vaxis = axis1 haxis = axis2 legend = legend1;&lt;br /&gt;run;&lt;br /&gt;quit;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/PLS_class1.gif"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/PLS_class1.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112707872181263706?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112707872181263706/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112707872181263706' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112707872181263706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112707872181263706'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/09/classification-model-using-partial.html' title='CLASSIFICATION MODEL USING PARTIAL LEAST SQUARES IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112701982002829940</id><published>2005-09-18T01:03:00.000-04:00</published><updated>2005-09-18T12:25:09.456-04:00</updated><title type='text'>CREATE DIAGLOG IN SAS USING SCL</title><content type='html'>&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* SCL PROGRAM TO SELECT A FILE BY DIAGLOG    */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* AND TO READ THE SELECTED FILE INTO SAS     */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* 18-SEP, 2005                               */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* SPECIAL THANKS TO Randy Herbison at westat */&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* DECLARE VARIABLES */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;dcl char(200) InFile;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;dcl num rc;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;init:&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* CREATES A DIAGLOG FOR FILE SELECTION */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;rc = filedialog('OPEN', InFile, ' ', ' ', '*.xls');&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* SELECTION BASED ON RETURNED VALUE OF rc */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;select(rc);&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;  when(0) put 'File selected';&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;  when(-1) put 'Selection cancel'; return;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;  otherwise put 'ERROR occurred'; return;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;end;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* RUN PROCEDURE TO IMPORT DATA */&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;submit immediate;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;  proc import datafile = "&amp;InFile"&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;    out = work.hhc1 dbms = EXCEL replace;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;    getnames = no;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;    mixed = yes;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;    range = "a2:s10000";&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;  run;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;endsubmit;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;return;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;/* END OF PROGRAM */     &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112701982002829940?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112701982002829940/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112701982002829940' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112701982002829940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112701982002829940'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/09/create-diaglog-in-sas-using-scl.html' title='CREATE DIAGLOG IN SAS USING SCL'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112488682873710659</id><published>2005-08-24T08:32:00.000-04:00</published><updated>2005-09-18T01:10:28.726-04:00</updated><title type='text'>CONVERT WIDE TO LONG TABLE IN SAS</title><content type='html'>&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;* TWO WAYS TO CONVERT WIDE TO LONG TABLE IN SAS *&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;* 19-AUG, 2005&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;data wide;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;do id = 1 to 2;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;array visit_[5];&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;do i = 1 to 5;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visit_[i] = rannor(i);&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;end;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;output;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;end;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;drop i;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;run;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;* METHOD 1: PROC TRANSPOSE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;proc sort data = wide;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;by id;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;run;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;proc transpose data = wide name = visit&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;out = long1 (rename = (col1 = x));&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;by id;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;run;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;* METHOD 2: ARRAY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;data long2;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;set wide;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;array v[5] visit_1-visit_5;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;do i = 1 to dim(v);&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;visit = vname(v[i]);&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;x = v[i];&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;output;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;end;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&amp;nbsp;&amp;nbsp;drop visit_1-visit_5 i;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;run;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;* END OF CODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; *&lt;/span&gt;&lt;br/&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;*************************************************;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112488682873710659?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112488682873710659/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112488682873710659' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112488682873710659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112488682873710659'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/convert-wide-to-long-table-in-sas.html' title='CONVERT WIDE TO LONG TABLE IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112476000598741434</id><published>2005-08-22T21:17:00.000-04:00</published><updated>2005-08-23T07:46:40.830-04:00</updated><title type='text'>SUMMARIZE DATA BY GROUP IN SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;*************************************************&lt;br /&gt;* THREE WAYS TO SUMMARIZE DATA BY GROUP             *&lt;br /&gt;* DATE: Aug-22, 2005                            *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;data table;&lt;br /&gt;do group = 1 to 3;&lt;br /&gt;  do i = 1 to 10;&lt;br /&gt;    x = rannor(1);&lt;br /&gt;    output;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;drop i;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* METHOD 1: PROC MEANS                          *&lt;br /&gt;*************************************************;&lt;br /&gt;proc means data = table noprint nway;&lt;br /&gt;class group;&lt;br /&gt;output out = summ1 (drop = _type_ rename = (_freq_ = x_count))&lt;br /&gt;mean(x) = x_mean sum(x) = x_sum;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* METHOD 2: PROC SQL                            *&lt;br /&gt;*************************************************;&lt;br /&gt;proc sql;&lt;br /&gt;create table summ2 as&lt;br /&gt;select&lt;br /&gt;  group,&lt;br /&gt;  count(x) as x_count,&lt;br /&gt;  mean(x) as x_mean,&lt;br /&gt;  sum(x) as x_sum&lt;br /&gt;from&lt;br /&gt;  table&lt;br /&gt;group by&lt;br /&gt;  group;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* METHOD 3: PROC SUMMARY                        *&lt;br /&gt;*************************************************;&lt;br /&gt;proc summary data = table nway;&lt;br /&gt;class group;&lt;br /&gt;output out = summ3 (drop = _type_ rename = (_freq_ = x_count))&lt;br /&gt;mean(x) = x_mean sum(x) = x_sum;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112476000598741434?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112476000598741434/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112476000598741434' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112476000598741434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112476000598741434'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/summarize-data-by-group-in-sas.html' title='SUMMARIZE DATA BY GROUP IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112450409139572654</id><published>2005-08-19T22:13:00.000-04:00</published><updated>2005-08-19T22:53:54.676-04:00</updated><title type='text'>CONVERT LONG TO WIDE TABLE IN SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;***********************************************************&lt;br /&gt;* THREE WAYS TO CONVERT LONG TABLE TO WIDE TABLE IN SAS *&lt;br /&gt;* DATE      : AUG-19, 2005                                *&lt;br /&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;data long;&lt;br /&gt;input id time x @@;&lt;br /&gt;datalines;&lt;br /&gt;1 1 123 1 2 126 1 3 128 2 1 112 2 2 110 2 3 115&lt;br /&gt;3 1 223 3 2 226 3 3 228 4 1 212 4 2 210 4 3 215&lt;br /&gt;;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* METHOD 1: PROC TRANSPOSE                    *&lt;br /&gt;*************************************************;&lt;br /&gt;proc sort data = long;&lt;br /&gt;by id;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc transpose data = long prefix = x&lt;br /&gt;out = wide1 (drop = _name_);&lt;br /&gt;id time;&lt;br /&gt;by id;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* METHOD 2: PROC SQL                            *&lt;br /&gt;*************************************************;&lt;br /&gt;proc sql;&lt;br /&gt;create table wide2 as&lt;br /&gt;select&lt;br /&gt;id,&lt;br /&gt;sum(case when time = 1 then x else 0 end) as x1,&lt;br /&gt;sum(case when time = 2 then x else 0 end) as x2,&lt;br /&gt;sum(case when time = 3 then x else 0 end) as x3&lt;br /&gt;from&lt;br /&gt;long&lt;br /&gt;group by&lt;br /&gt;id;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* METHOD 3: DATA STEP                           *&lt;br /&gt;*************************************************;&lt;br /&gt;data wide3;&lt;br /&gt;retain id;&lt;br /&gt;array u[*] x1-x3;&lt;br /&gt;do i=1 to dim(u);&lt;br /&gt;set long;&lt;br /&gt;u[i]=x;&lt;br /&gt;end;&lt;br /&gt;drop x time i;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112450409139572654?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112450409139572654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112450409139572654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112450409139572654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112450409139572654'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/convert-long-to-wide-table-in-sas.html' title='CONVERT LONG TO WIDE TABLE IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112437089058803605</id><published>2005-08-18T09:13:00.000-04:00</published><updated>2005-08-20T22:29:45.240-04:00</updated><title type='text'>CALL SAS FROM VB USING OLE</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;'**********************************************************&lt;br /&gt;'* CALL A SAS SESSION FROM VB USING OLE *&lt;br /&gt;'* DATE      : AUG-18, 2005                                *&lt;br /&gt;'**********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;Option Compare Database&lt;br /&gt;Option Explicit&lt;br /&gt;&lt;br /&gt;Private Sub Button_Click()&lt;br /&gt;&lt;br /&gt;' DECLARE SAS OBJECT&lt;br /&gt;Dim OleSAS As Object&lt;br /&gt;&lt;br /&gt;' INVOKE SAS APPLICATION&lt;br /&gt;Set OleSAS = CreateObject("SAS.Application")&lt;br /&gt;OleSAS.Wait = True&lt;br /&gt;' LET SAS SESSION VISIBLE&lt;br /&gt;OleSAS.Visible = True&lt;br /&gt;' ASSIGN WORKING DIRECTORY TO SAS MACRO VARIABLE&lt;br /&gt;OleSAS.Submit ("%let path = " &amp; CurrentProject.Path &amp;amp;amp;amp;amp;amp; ";")&lt;br /&gt;' RUN A SAS CODE IN WORKING DIRECTORY&lt;br /&gt;OleSAS.Submit ("%include '&amp;path.\SAS_code.sas';")&lt;br /&gt;' QUIT SAS SESSION&lt;br /&gt;OleSAS.Quit&lt;br /&gt;' FREE UP SAS OJBECT&lt;br /&gt;Set OleSAS = Nothing&lt;br /&gt;' GIVE A MESSAGE BOX&lt;br /&gt;MsgBox "SAS job finished!"&lt;br /&gt;&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;'**********************************************************&lt;br /&gt;'* END OF CODE *&lt;br /&gt;'**********************************************************&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112437089058803605?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112437089058803605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112437089058803605' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112437089058803605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112437089058803605'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/call-sas-from-vb-using-ole.html' title='CALL SAS FROM VB USING OLE'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112407688705203114</id><published>2005-08-14T23:30:00.000-04:00</published><updated>2005-08-19T16:42:17.250-04:00</updated><title type='text'>GAM MODELING WITH GAM &amp; MGCV PACKAGES IN R</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# A DEMO OF CLASSIFICATION USING GAM                      #&lt;br /&gt;# DEVELOPED BY Hastie and Tibshirani (1990)               #&lt;br /&gt;# DATE: 14-AUG-2005                                       #&lt;br /&gt;###########################################################&lt;br /&gt;&lt;br /&gt;library(gam);&lt;br /&gt;data(kyphosis);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# A STEPWISE PROCEDURE TO SELECT BEST GAM BASED ON AIC    #&lt;br /&gt;###########################################################&lt;br /&gt;ky.gam1&lt;-gam(Kyphosis~Age+Number+Start, data=kyphosis, family=binomial);&lt;br /&gt;ky.step&lt;-step.gam(ky.gam1, scope=list("Age"=~1+Age+s(Age, 3)+s(Age, 4)+s(Age, 5), "Number"=~1+Number+s(Number, 3)+s(Number, 4), "Start"=~1+Start+s(Start, 3)+s(Start, 4)+s(Start, 5)), direction="both");&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;detach(package:gam);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# BUILD A GAM BASED ON THE OUTPUT OF STEPWISE PROCEDURE # ###########################################################&lt;br /&gt;library(mgcv); ky.gam2&lt;-gam(Kyphosis~s(Age, k=3, fx=T)+ Number+s(Start, k=3, fx=T), data=kyphosis, family=binomial);&lt;br /&gt;summary(ky.gam2);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# VISUALIZATION OF THE ABOVE GAM MODEL # ###########################################################&lt;br /&gt;plot(ky.gam2, all.terms=T, shade=T, shade.col=15, page=1);&lt;br /&gt;title(main="Partial Dependences of Predictors"); &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/gam_demo1.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/gam_demo1.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;vis.gam(ky.gam2, view=c("Age", "Start"), theta=60, phi =0,color="topo", main="3D Visualization of Kyphosis GAM model");&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/gam_demo2.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/gam_demo2.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# END OF CODE                                             #&lt;br /&gt;###########################################################&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/gam_demo2.jpeg"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112407688705203114?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112407688705203114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112407688705203114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112407688705203114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112407688705203114'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/gam-modeling-with-gam-mgcv-packages-in.html' title='GAM MODELING WITH GAM &amp; MGCV PACKAGES IN R'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112380231240187778</id><published>2005-08-11T19:15:00.000-04:00</published><updated>2005-08-11T19:21:40.143-04:00</updated><title type='text'>BUILDING CART WITH RPART PACKAGE IN R</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# A DEMO OF PATTERN RECOGNITION USING CART                #&lt;br /&gt;# DEVELOPED BY Breiman, Friedman, Olshen, &amp; Stone (1984)  #&lt;br /&gt;# DATE: 11-AUG-2005                                       #&lt;br /&gt;###########################################################&lt;br /&gt;&lt;br /&gt;data(iris);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# LOAD  RPART AND MAPTREE PACKAGES                        #&lt;br /&gt;###########################################################&lt;br /&gt;library(rpart);&lt;br /&gt;library(maptree);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# BUILD A INITIAL CART MODEL WITH IRIS DATA               #&lt;br /&gt;###########################################################&lt;br /&gt;iris.tree1&lt;-rpart(Species~., data = iris, control = rpart.control(minsplit = 5, xval=5));&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# PLOT THE TREE DIAGRAM OF CART # ###########################################################&lt;br /&gt;draw.tree(iris.tree1, nodeinfo=TRUE, pch=22, cex=1.2, size = 4);&lt;br /&gt;title(main = "INITIAL TREE OF IRIS CART MODEL"); &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/cart_demo11.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/cart_demo11.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# PLOT OF COST-COMPLEXITY PRUNING TO SELECT BEST SIZE     #&lt;br /&gt;###########################################################&lt;br /&gt;plotcp(iris.tree1);&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/cart_cp1.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/cart_cp1.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# PRUNE THE INITIAL CART TO THE ONE WITH BEST SIZE        #&lt;br /&gt;###########################################################&lt;br /&gt;iris.tree2&lt;-prune.Rpart(iris.tree1, best = 3);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# PLOT THE TREE DIAGRAM OF FINAL CART MODEL # ###########################################################&lt;br /&gt;draw.tree(iris.tree2, nodeinfo=TRUE, pch=22, cex=1.2, size = 4);&lt;br /&gt;title(main = "PRUNED TREE OF IRIS CART MODEL"); &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/cart_demo21.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/cart_demo21.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;###########################################################&lt;br /&gt;# END OF CODE                                             #&lt;br /&gt;###########################################################&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112380231240187778?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112380231240187778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112380231240187778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112380231240187778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112380231240187778'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/building-cart-with-rpart-package-in-r.html' title='BUILDING CART WITH RPART PACKAGE IN R'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112373156098092418</id><published>2005-08-10T23:34:00.000-04:00</published><updated>2005-08-10T23:49:47.843-04:00</updated><title type='text'>BUILDING CONDITIONAL TREE WITH PARTY PACKAGE IN R</title><content type='html'>&lt;span style="font-family: courier new;font-size:85%;" &gt;###########################################################&lt;br /&gt;# A DEMO OF PATTERN RECOGNITION USING CONDITIONAL TREES   #&lt;br /&gt;# DEVELOPED BY Hothorn, Hornik &amp; Zeileis (2004)           #&lt;br /&gt;# DATE: 10-AUG-2005                                       #&lt;br /&gt;###########################################################&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# LOAD IRIS DATA FROM R                                   #&lt;br /&gt;###########################################################&lt;br /&gt;data(iris);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# LOAD PARTY PACKAGE                                      #&lt;br /&gt;###########################################################&lt;br /&gt;library(party);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# BUILD A CONDITIONAL TREE MODEL WITH IRIS DATA           #&lt;br /&gt;###########################################################&lt;br /&gt;iris.tree&lt;-ctree(Species~., data = iris, controls = ctree_control(mincriterion = 0.95));&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# PREDICT SPECIES USING TREE MODEL                        #&lt;br /&gt;###########################################################&lt;br /&gt;pred.Species&lt;-predict(iris.tree);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# CALCULATE CONFUSION MATRIX                              #&lt;br /&gt;###########################################################&lt;br /&gt;attach(iris);&lt;br /&gt;table(Species, pred.Species, deparse.level = 2);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# PLOT THE TREE DIAGRAM                                   #&lt;br /&gt;###########################################################&lt;br /&gt;plot(iris.tree);&lt;br /&gt;&lt;br /&gt;###########################################################&lt;br /&gt;# END OF CODE                                             #&lt;br /&gt;###########################################################&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/party_demo2.jpeg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/party_demo1.jpeg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-size:85%;" &gt;&lt;/span&gt;&lt;span style="font-family: courier new;font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112373156098092418?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112373156098092418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112373156098092418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112373156098092418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112373156098092418'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/building-conditional-tree-with-party.html' title='BUILDING CONDITIONAL TREE WITH PARTY PACKAGE IN R'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112353297314263262</id><published>2005-08-08T16:28:00.000-04:00</published><updated>2005-08-20T07:51:52.666-04:00</updated><title type='text'>RESHAPE BETWEEN LONG AND WIDE TABLES IN SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;*************************************************&lt;br /&gt;* HOW TO RESHAPE TO LONG AND WIDE TABLES IN SAS *&lt;br /&gt;* DATE: 08-AUG-2005                             *&lt;br /&gt;*************************************************&lt;br /&gt;* THIS CODE MIGHT BE HELPFUL FOR THE ANALYSIS   *&lt;br /&gt;* OF REPEATED MEASURES FOR CLINICAL TRIAL       *&lt;br /&gt;*************************************************;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* GENERATE A LONG TABLE                         *&lt;br /&gt;*************************************************;&lt;br /&gt;data long;&lt;br /&gt; do i = 1 to 5;&lt;br /&gt;   id = put(i, z3.);&lt;br /&gt;   do j = 1 to 10;&lt;br /&gt;     visit = j;&lt;br /&gt;     test = rannor(123);&lt;br /&gt;     output;&lt;br /&gt;   end;&lt;br /&gt; end;&lt;br /&gt; drop i j;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* CONVERT THE LONG TABLE TO A WIDE ONE          *&lt;br /&gt;*************************************************;&lt;br /&gt;proc sort data = long;&lt;br /&gt; by id;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;proc transpose data = long prefix = test&lt;br /&gt; out = wide (drop = _name_);&lt;br /&gt; id visit;&lt;br /&gt; by id;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* CONVERT THE WIDE TABLE BACK TO A LONG ONE     *&lt;br /&gt;*************************************************;&lt;br /&gt;data long2;&lt;br /&gt; set wide;&lt;br /&gt; array t{*} test1 - test10;&lt;br /&gt; do i = 1 to 10;&lt;br /&gt;   visit = i;&lt;br /&gt;   test = t{i};&lt;br /&gt;   output;&lt;br /&gt; end;&lt;br /&gt; keep id visit test;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;* END OF CODE                                   *&lt;br /&gt;*************************************************;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112353297314263262?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112353297314263262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112353297314263262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112353297314263262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112353297314263262'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/reshape-between-long-and-wide-tables.html' title='RESHAPE BETWEEN LONG AND WIDE TABLES IN SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112310744451776405</id><published>2005-08-03T18:15:00.000-04:00</published><updated>2005-08-19T22:57:06.066-04:00</updated><title type='text'>INSERT CHART &amp; DATA FROM SAS INTO EXCEL USING DDE</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* A DEMO SHOWS HOW TO CREATE &amp; OUTPUT A CHART IN SAS      *&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;* AND INSERT IT INTO EXCEL USING DDE           *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* DATE: 03-AUG-2005                                       *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;data one;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;do x = 1 to 10;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  y = x*x + rannor(123)*5;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  output;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;end;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;filename plot 'C:\temp\plot.bmp';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;goptions reset = global gsfname = plot gsfmode = replace cback = white device = emf&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;         xmax = 10 in hsize = 8.4 in ymax = 7 in vsize = 5.4 in;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;symbol i = spline w = 2 c = blue cv = red h = 1 v = dot;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;title height = 1.5 font = arial color = red box = 2&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'A DEMO HOW TO EXPORT CHART FROM SAS AND PUT IT IN EXCEL';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;proc gplot data = one;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; plot y * x;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;title;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;quit;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;options noxwait noxsync;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;x '"C:\Program Files\Microsoft Office\Office11\excel.exe"';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;filename cmd dde 'excel|system';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;filename label dde 'excel|sheet1!r1c1:r1c10';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;filename data dde 'excel|sheet1!r2c1:r100c10';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;data _null_;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  file cmd;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[file.close(false)]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[new(1)]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[error(false)]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[save.as("C:\temp\demo")]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[app.maximize()]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[workbook.insert(2)]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put '[insert.picture("C:\temp\plot.bmp", 1)]';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;data _null_;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  set one;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  file label notab;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put 'X' '09'x 'Y';&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  file data notab;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  put x 4.0 '09'x y 8.2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* END OF CODE                                             *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/dde_demo.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/320/dde_demo.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112310744451776405?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112310744451776405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112310744451776405' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112310744451776405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112310744451776405'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/insert-chart-data-from-sas-into-excel.html' title='INSERT CHART &amp; DATA FROM SAS INTO EXCEL USING DDE'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112304382909991207</id><published>2005-08-03T00:34:00.000-04:00</published><updated>2005-08-19T22:56:29.573-04:00</updated><title type='text'>READ AN IMAGE INTO SAS</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;**********************************************&lt;br /&gt;* A DEMO SHOWS HOW TO READ AN IMAGE INTO SAS *&lt;br /&gt;* DATE: 02-AUG-2005                          *&lt;br /&gt;**********************************************;&lt;br /&gt;&lt;br /&gt;data image;&lt;br /&gt;length function $ 8 style $ 8;&lt;br /&gt;function = 'move';&lt;br /&gt;xsys = '3'; ysys = '3';&lt;br /&gt;x = 10; y = 10; output;&lt;br /&gt;function = 'image';&lt;br /&gt;imgpath = 'C:\temp\joyce.jpg';&lt;br /&gt;x = 85; y = 85; style = 'fit'; output;&lt;br /&gt;run;&lt;br /&gt;&lt;br /&gt;title height = 3&lt;br /&gt;  color = red&lt;br /&gt;  underlin = 3&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;     font = zapfb&lt;br /&gt;  "Joyce's Photo Read into SAS";&lt;br /&gt;&lt;br /&gt;proc gslide anno = image;&lt;br /&gt;run;&lt;br /&gt;quit;&lt;br /&gt;&lt;br /&gt;**********************************************&lt;br /&gt;*               END OF CODE                  *&lt;br /&gt;**********************************************;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/5839/441/1600/demo1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/5839/441/400/demo1.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112304382909991207?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112304382909991207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112304382909991207' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112304382909991207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112304382909991207'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/read-image-into-sas.html' title='READ AN IMAGE INTO SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112295084421376048</id><published>2005-08-01T22:46:00.000-04:00</published><updated>2005-08-20T22:34:05.033-04:00</updated><title type='text'>CONNECT TO ORACLE AND SQL SERVER FROM SAS USING OLEDB</title><content type='html'>&lt;span style=";font-family:courier new;font-size:85%;"  &gt;***********************************************************&lt;br /&gt;* CONNECT TO ORACLE AND SQL SERVER DATABASE   *&lt;br /&gt;*             FROM SAS USING OLEDB                        *&lt;br /&gt;* DATE      : AUG-01, 2005                                *&lt;br /&gt;***********************************************************;&lt;br /&gt;&lt;br /&gt;***********************************************************&lt;br /&gt;* 1. CONNECT TO ORACLE DATABASE                           *&lt;br /&gt;***********************************************************;&lt;br /&gt;libname OracleOLE oledb&lt;br /&gt;provider = MSDAORA&lt;br /&gt;dsn = ServerName&lt;br /&gt;pwd = PassWord&lt;br /&gt;uid = UserName&lt;br /&gt;schema = SchemaName;&lt;br /&gt;&lt;br /&gt;***********************************************************&lt;br /&gt;* 2. CONNECT TO SQL SERVER DATABASE                       *&lt;br /&gt;***********************************************************;&lt;br /&gt;libname SqlOLE oledb&lt;br /&gt;provider = SQLOLEDB.1&lt;br /&gt;dsn = ServerName&lt;br /&gt;pwd = PassWord&lt;br /&gt;uid = UserName&lt;br /&gt;schema = SchemaName;&lt;br /&gt;&lt;br /&gt;***********************************************************&lt;br /&gt;* END OF CODE                                             *&lt;br /&gt;***********************************************************;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112295084421376048?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112295084421376048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112295084421376048' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112295084421376048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112295084421376048'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/08/connect-to-oracle-and-sql-server-from.html' title='CONNECT TO ORACLE AND SQL SERVER FROM SAS USING OLEDB'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112276645451447874</id><published>2005-07-30T19:33:00.000-04:00</published><updated>2005-08-19T22:55:35.323-04:00</updated><title type='text'>READ DATA FROM EXCEL &amp; ACCESS INTO R</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;br /&gt;# WHAT IS R LANGUAGE?                                     #&lt;br /&gt;#   R (www.r-project.org) is a free software environment  #&lt;br /&gt;# for statistical computing and graphics.                 #&lt;br /&gt;###########################################################&lt;br /&gt;&lt;br /&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# HOW TO READ DATA FROM EXCEL &amp; ACCESS INTO R #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# DATE      : JUL-30, 2005                                #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;library(RODBC);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# 1. READ DATA FROM EXCEL INTO R                          #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;xlsConnect&lt;-odbcConnectExcel("C:\\temp\\demo.xls");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;demo&lt;-sqlFetch(xlsConnect, "Sheet1");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;odbcClose(xlsConnect);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rm(demo);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# 2. READ DATA FROM ACCESS INTO R                         #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;mdbConnect&lt;-odbcConnectAccess("C:\\temp\\demo.mdb");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;sqlTables(mdbConnect);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;demo&lt;-sqlFetch(mdbConnect, "tblDemo");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;odbcClose(mdbConnect);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;rm(demo);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;# END OF CODE                                          #&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;###########################################################&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112276645451447874?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112276645451447874/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112276645451447874' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112276645451447874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112276645451447874'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/07/read-data-from-excel-access-into-r.html' title='READ DATA FROM EXCEL &amp; ACCESS INTO R'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112269867435894534</id><published>2005-07-30T00:42:00.000-04:00</published><updated>2005-08-19T22:54:48.030-04:00</updated><title type='text'>READ DATA FROM ACCESS DATABASE INTO SAS</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* METHODS TO READ DATA FROM ACCESS DATABASE &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;INTO SAS                                    *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* DATE      : JUL-30, 2005                                *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* METHOD 1: OLEDB (SAS/ACCESS INTERFACE REQUIRED)         *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;libname OLEmdb oledb&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  init_string="Provider = Microsoft.Jet.OLEDB.4.0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  Data Source= c:\temp\demo.mdb";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;data demo;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  set OLEmdb.tblDemo;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;libname _all_ clear;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* METHOD 2: PROC IMPORT                                   *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;proc import table = "tblDemo"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  out = demo&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  dbms = access;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  database="c:\temp\demo.mdb";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* METHOD 3: ODBC (ODBC DRIVER REQUIRED)                   *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;libname ODBCmdb odbc &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  complete = "DSN=MS Access Database; DBQ=C:\temp\demo.mdb";&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;data demo;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;  set ODBCmdb.tblDemo;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;libname _all_ clear;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;* END OF CODE                                          *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112269867435894534?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112269867435894534/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112269867435894534' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112269867435894534'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112269867435894534'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/07/read-data-from-access-database-into.html' title='READ DATA FROM ACCESS DATABASE INTO SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-14899332.post-112256631644945249</id><published>2005-07-28T11:57:00.000-04:00</published><updated>2005-09-18T01:58:58.990-04:00</updated><title type='text'>READ DATA FROM EXCEL INTO SAS</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* METHODS TO READ DATA FROM EXCEL INTO SAS                *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* DATE : JUL-28, 2005                                     *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* METHOD 1: OLEDB (SAS/ACCESS INTERFACE REQUIRED)         *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;libname OLExls oledb&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;provider = "Microsoft.Jet.OLEDB.4.0"&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  properties=("data source" = 'c:\temp\demo.xls')&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  provider_string = "Excel 8.0";&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;data demo;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  set OLExls."Sheet1$"n;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;libname _all_ clear;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* METHOD 2: PROC IMPORT                                   *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;proc import datafile = "c:\temp\demo.xls"&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  out = demo;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  sheet = "Sheet1$";&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  getnames = YES;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* METHOD 3: DDE (DYNAMIC DATA EXCHANGE)                   *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;options noxwait noxsync;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;x '"c:\program files\microsoft office\office11\excel"';&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;data _null_;                                                                   &lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  x=sleep(1);                                                                    &lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;run;   &lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;filename cmd dde "excel|system";&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;data _null_;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  file cmd;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  put '[app.minimize()]';&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  put '[open("C:\temp\demo.xls")]';&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;filename DDExls dde "excel|sheet1!r2c1:r200c2";&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;data demo;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  infile DDExls;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  input x y $;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;data _null_;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  file cmd;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  put '[quit()]';&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;run;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* METHOD 4: ODBC (ODBC DRIVER REQUIRED)                   *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;proc sql;&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  connect to ODBC ("DSN=Excel Files;DBQ=C:\temp\demo.xls");&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;  create table demo as&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;    select * from connection to ODBC&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;      (&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;         select * from  "Sheet1$"n&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;      );&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;quit;&lt;/span&gt;&lt;br /&gt; &lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;* END OF CODE                                             *&lt;/span&gt;&lt;br /&gt; &lt;span style="font-family: courier new;"&gt;***********************************************************;&lt;/span&gt;&lt;br /&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/14899332-112256631644945249?l=statcompute.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://statcompute.blogspot.com/feeds/112256631644945249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=14899332&amp;postID=112256631644945249' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112256631644945249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/14899332/posts/default/112256631644945249'/><link rel='alternate' type='text/html' href='http://statcompute.blogspot.com/2005/07/read-data-from-excel-into-sas.html' title='READ DATA FROM EXCEL INTO SAS'/><author><name>WenSui Liu</name><uri>http://www.blogger.com/profile/04407321182417158636</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
