haven can be used to import and export files from a variety of other statistical packages like Stata, SPSS and SAS and related software. There is a
read function for each of the supported data types to import the files.
# loading the packages library(foreign) library(haven) library(readstata13) library(Hmisc)
Some examples for the most common data types:
# reading Stata files with `foreign` read.dta("path\to\your\data") # reading Stata files with `haven` read_dta("path\to\your\data")
foreign package can read in stata (.dta) files for versions of Stata 7-12. According to the development page, the
read.dta is more or less frozen and will not be updated for reading in versions 13+. For more recent versions of Stata, you can use either the
readstata13 package or
readstata13, the files are
# reading recent Stata (13+) files with `readstata13` read.dta13("path\to\your\data")
For reading in SPSS and SAS files
# reading SPSS files with `foreign` read.spss("path\to\your\data.sav", to.data.frame = TRUE) # reading SPSS files with `haven` read_spss("path\to\your\data.sav") read_sav("path\to\your\data.sav") read_por("path\to\your\data.por") # reading SAS files with `foreign` read.ssd("path\to\your\data") # reading SAS files with `haven` read_sas("path\to\your\data") # reading native SAS files with `Hmisc` sas.get("path\to\your\data") #requires access to saslib # Reading SA XPORT format ( *.XPT ) files sasxport.get("path\to\your\data.xpt") # does not require access to SAS executable
SAScii package provides functions that will accept SAS SET import code and construct a text file that can be processed with
read.fwf. It has proved very robust for import of large public-released datasets. Support is at https://github.com/ajdamico/SAScii
To export data frames to other statistical packages you can use the write functions
write.foreign(). This will write 2 files, one containing the data and one containing instructions the other package needs to read the data.
# writing to Stata, SPSS or SAS files with `foreign` write.foreign(dataframe, datafile, codefile, package = c("SPSS", "Stata", "SAS"), ...) write.foreign(dataframe, "path\to\data\file", "path\to\instruction\file", package = "Stata") # writing to Stata files with `foreign` write.dta(dataframe, "file", version = 7L, convert.dates = TRUE, tz = "GMT", convert.factors = c("labels", "string", "numeric", "codes")) # writing to Stata files with `haven` write_dta(dataframe, "path\to\your\data") # writing to Stata files with `readstata13` save.dta13(dataframe, file, data.label = NULL, time.stamp = TRUE, convert.factors = TRUE, convert.dates = TRUE, tz = "GMT", add.rownames = FALSE, compress = FALSE, version = 117, convert.underscore = FALSE) # writing to SPSS files with `haven` write_sav(dataframe, "path\to\your\data")
File stored by the SPSS can also be read with
read.spss in this way:
foreign::read.spss('data.sav', to.data.frame=TRUE, use.value.labels=FALSE, use.missings=TRUE, reencode='UTF-8') # to.data.frame if TRUE: return a data frame # use.value.labels if TRUE: convert variables with value labels into R factors with those levels # use.missings if TRUE: information on user-defined missing values will used to set the corresponding values to NA. # reencode character strings will be re-encoded to the current locale. The default, NA, means to do so in a UTF-8 locale, only.