<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Importing SPSS File (.sav) into SAS System --Urgent in ODS and Base Reporting</title>
    <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2435#M1043</link>
    <description>I have a macro in my blog to do so. But please read the instruction carefully.&lt;BR /&gt;
&lt;BR /&gt;
MACRO TO READ *.sav OR *.dta INTO SAS&lt;BR /&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;
 &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;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;amp;file", 1, index("&amp;amp;file", scan("&amp;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;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;amp;file", -1, "."));&lt;BR /&gt;
  /* OUTPUT A FILE WITH R CODE */&lt;BR /&gt;
  file "&amp;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;amp;data"||'&amp;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;amp;data"||'&amp;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;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;
  /* END OF R FILE */&lt;BR /&gt;
  /* ASSIGN SHELL SCRIPT TO RUN R LANGUAGE TO MACRO VARIABLE */&lt;BR /&gt;
  cmd = "'"||'"'||"&amp;amp;rpath.Rcmd.exe"||'" BATCH -- "'||&lt;BR /&gt;
        "&amp;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;amp;cmd;&lt;BR /&gt;
 &lt;BR /&gt;
/* IMPORT *.csv FILE OUTPUT BY R INTO SAS */&lt;BR /&gt;
proc import datafile = "&amp;amp;path.&amp;amp;data..csv"&lt;BR /&gt;
  out = &amp;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;amp;r..Rout";&lt;BR /&gt;
  input;&lt;BR /&gt;
  /* SHOW R OUTPUT IN SAS LOG WINDOW */&lt;BR /&gt;
  if _n_ &amp;gt; 20 then put _infile_;&lt;BR /&gt;
  /* ASSIGN NAMES OF INTERMEDIATE FILES TO MACRO VARIABLES */&lt;BR /&gt;
  del1 = "'del "||'"'||"&amp;amp;r"||'"'||"'";&lt;BR /&gt;
  call symput('del1', trim(del1));&lt;BR /&gt;
  del2 = "'del "||'"'||"&amp;amp;path.&amp;amp;data..csv"||'"'||"'";&lt;BR /&gt;
  call symput('del2', trim(del2));&lt;BR /&gt;
  del3 = "'del "||'"'||"&amp;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;amp;del1;&lt;BR /&gt;
systask command &amp;amp;del2;&lt;BR /&gt;
systask command &amp;amp;del3;&lt;BR /&gt;
 &lt;BR /&gt;
/************************************************&lt;BR /&gt;
*               END OF MACRO                    *&lt;BR /&gt;
************************************************/&lt;BR /&gt;
%mend foreign;</description>
    <pubDate>Sun, 11 Mar 2007 03:17:41 GMT</pubDate>
    <dc:creator>wensui</dc:creator>
    <dc:date>2007-03-11T03:17:41Z</dc:date>
    <item>
      <title>Importing SPSS File (.sav) into SAS System --Urgent</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2433#M1041</link>
      <description>Hi All,&lt;BR /&gt;
&lt;BR /&gt;
I being trying to import a SPSS file, with extension ".sav", into the SAS system.   So far I can use proc import to read it in, but the data set's format is incorrect.   Unfortunately I don't have SPSS to convert ".sav" to ".port", so this option is not available to me.   Please kindly let me know what else I can do to read in this file or how to adjust the formatting issue.   Your help is much appreciated!!!&lt;BR /&gt;
&lt;BR /&gt;
                                Thanks,&lt;BR /&gt;
                                    Robert</description>
      <pubDate>Wed, 07 Mar 2007 18:27:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2433#M1041</guid>
      <dc:creator>deleted_user</dc:creator>
      <dc:date>2007-03-07T18:27:07Z</dc:date>
    </item>
    <item>
      <title>Re: Importing SPSS File (.sav) into SAS System --Urgent</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2434#M1042</link>
      <description>This question is perhaps best answered by Technical Support.   You can submit it online at &lt;A href="http://support.sas.com/ctx/supportform/index.jsp" target="_blank"&gt;http://support.sas.com/ctx/supportform/index.jsp&lt;/A&gt; .&lt;BR /&gt;
&lt;BR /&gt;
-- David Kelley, SAS</description>
      <pubDate>Wed, 07 Mar 2007 20:01:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2434#M1042</guid>
      <dc:creator>David_SAS</dc:creator>
      <dc:date>2007-03-07T20:01:33Z</dc:date>
    </item>
    <item>
      <title>Re: Importing SPSS File (.sav) into SAS System --Urgent</title>
      <link>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2435#M1043</link>
      <description>I have a macro in my blog to do so. But please read the instruction carefully.&lt;BR /&gt;
&lt;BR /&gt;
MACRO TO READ *.sav OR *.dta INTO SAS&lt;BR /&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;
 &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;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;amp;file", 1, index("&amp;amp;file", scan("&amp;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;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;amp;file", -1, "."));&lt;BR /&gt;
  /* OUTPUT A FILE WITH R CODE */&lt;BR /&gt;
  file "&amp;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;amp;data"||'&amp;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;amp;data"||'&amp;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;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;
  /* END OF R FILE */&lt;BR /&gt;
  /* ASSIGN SHELL SCRIPT TO RUN R LANGUAGE TO MACRO VARIABLE */&lt;BR /&gt;
  cmd = "'"||'"'||"&amp;amp;rpath.Rcmd.exe"||'" BATCH -- "'||&lt;BR /&gt;
        "&amp;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;amp;cmd;&lt;BR /&gt;
 &lt;BR /&gt;
/* IMPORT *.csv FILE OUTPUT BY R INTO SAS */&lt;BR /&gt;
proc import datafile = "&amp;amp;path.&amp;amp;data..csv"&lt;BR /&gt;
  out = &amp;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;amp;r..Rout";&lt;BR /&gt;
  input;&lt;BR /&gt;
  /* SHOW R OUTPUT IN SAS LOG WINDOW */&lt;BR /&gt;
  if _n_ &amp;gt; 20 then put _infile_;&lt;BR /&gt;
  /* ASSIGN NAMES OF INTERMEDIATE FILES TO MACRO VARIABLES */&lt;BR /&gt;
  del1 = "'del "||'"'||"&amp;amp;r"||'"'||"'";&lt;BR /&gt;
  call symput('del1', trim(del1));&lt;BR /&gt;
  del2 = "'del "||'"'||"&amp;amp;path.&amp;amp;data..csv"||'"'||"'";&lt;BR /&gt;
  call symput('del2', trim(del2));&lt;BR /&gt;
  del3 = "'del "||'"'||"&amp;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;amp;del1;&lt;BR /&gt;
systask command &amp;amp;del2;&lt;BR /&gt;
systask command &amp;amp;del3;&lt;BR /&gt;
 &lt;BR /&gt;
/************************************************&lt;BR /&gt;
*               END OF MACRO                    *&lt;BR /&gt;
************************************************/&lt;BR /&gt;
%mend foreign;</description>
      <pubDate>Sun, 11 Mar 2007 03:17:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/ODS-and-Base-Reporting/Importing-SPSS-File-sav-into-SAS-System-Urgent/m-p/2435#M1043</guid>
      <dc:creator>wensui</dc:creator>
      <dc:date>2007-03-11T03:17:41Z</dc:date>
    </item>
  </channel>
</rss>

