Package to read and write all Stata file formats (version 17 and older) into a R data.frame. The dta file format versions 102 to 121 are supported (including dtas files).
The function read.dta from the foreign package imports
only dta files from Stata versions <= 12. Due to the different
structure and features of dta 117 files, we wrote a new file reader in
Rcpp.
Additionally the package supports many features of the Stata dta
format like label sets in different languages (?set.lang)
or business calendars (?as.caldays).
The package is hosted on CRAN.
install.packages("readstata13")library(readstata13)
dat <- read.dta13("path to file.dta")
save.dta13(dat, file="newfile.dta")To install the current release from github you need the platform specific build tools. On Windows a current installation of Rtools is necessary, while OS X users need to install Xcode.
# install.packages("remotes")
remotes::install_github("sjewo/readstata13", ref="0.11")To install the current development version from github:
remotes::install_github("sjewo/readstata13", ref="testing")| Version | Changes |
|---|---|
| 0.11.0 | Initial support for Stata 18. Import .dtas
files (Stata framesets) via read.dtas(). Alias variables
are currently ignored with a warning. |
The select.cols argument
accepts either variable names or column indices. |
|
| Fix compilation on musl and other non-glibc based systems. | |
| Add package alias to readstata13.Rd |
See News for the full changelog.
Most attributes of the resulting data.frame are largely similar to
the data.frames produced by foreign. Since newer Stata
files require some additional attributes, the results of
all.equal() and identical() will be
FALSE for data.frames read by
foreign::read.dta and read.dta13(). Otherwise,
the data.frames produced by both functions are identical.
library(foreign)
library(readstata13)
# with factors
r12 <- read.dta("http://www.stata-press.com/data/r12/auto.dta")
r13 <- read.dta13("http://www.stata-press.com/data/r13/auto.dta")
all.equal(r12, r13, check.attributes = FALSE)
# without factors
r12 <- read.dta("http://www.stata-press.com/data/r12/auto.dta",
convert.factors = FALSE)
r13 <- read.dta13("http://www.stata-press.com/data/r13/auto.dta",
convert.factors = FALSE)
all.equal(r12, r13, check.attributes = FALSE)Marvin Garbuszus (JanMarvin) and Sebastian Jeworutzki (sjewo)
GPL2