Starting with version 2.1,
markstat lets you combine Stata, Mata
and R code blocks and inline code.
Here is a simple example regarding the calculation of quantiles
% Quantiles in Stata and R Stata and R compute percentiles differently. Let us load the `auto` dataset and compute the 75th percentile of `price` using Stata's `centile` ```s sysuse auto, clear centile price, centile(75) save auto, replace ``` We find that the 75-th percentile is `s r(c_1)`. Now let us do the same with R. We'll use the `haven` library to read a Stata file ```r library(haven) auto <- read_dta("auto.dta") q <- quantile(auto$price, 0.75); q ``` According to R, the 75-th percentile is `r round(q, 1)`. Turns out R has 9 types of quantiles, the default is 7. To get the same result as `centile` specify type 6, which gives `r quantile(auto$price, 0.75, type=6)`. The Stata commands `summarize, detail`, `xtile`, `pctile` and `_pctile` use yet another method, equivalent to R's type 2. These give the third quartile as `r quantile(auto$price, 0.75, type=2)`. The last three commands have an `altdef` option that gives the same answer as `centile`. For a discussion of these methods see Hyndman, R. J. and Fan, Y. (1996) Sample quantiles in statistical packages, *American Statistician* 50:361-365.
As you can see, we handle R code the same way as Stata and Mata, using code
fences but with an
r instead of an
You can copy and paste this script, or download it to your working directory
using the command
copy https://data.princeton.edu/stata/markdown/quantiles.stmd quantiles.stmd
To run this script in Stata you use the command:
markstat using quantiles
The script uses the strict syntax, but
markstat 2.1 detects the
use of code fences and sets strict mode automatically.
strict option remains available for rare cases where autodetection
will not work, such as files with indented Markdown but no Stata, Mata or R code.)
You can see the html output here.
For this to work you need to have R installed, and you need to use
from SSC to register the location of
R in your computer. I recommend
you first update
whereis to make sure you have the latest version.
Then follow the instructions on Getting Started R,
which has registration examples for Windows 10 and Mac OS X.
This particular script also requires R's
haven package to read
Stata files. Stas Kolenikov pointed out that you could modify the script to
install the package on demand, replacing
tryCatch(library("haven"), error = function(e) install.packages("haven", repos="https://cloud.r-project.org"), finally = library("haven"))
For a more extensive example, see this page, which uses Bootstrap tabs to switch between Stata and R in a Cox regression.