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
).
Usage
library(readstata13)
dat <- read.dta13("path to file.dta")
save.dta13(dat, file="newfile.dta")
Development Version
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")
Changelog and Features
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.
readstata13 and foreign
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)
Authors
Marvin Garbuszus (JanMarvin) and Sebastian Jeworutzki (sjewo)