Code from raw data to output#

The package must run from raw inputs to every number in the paper — no manual steps, no hand edits.

  • Every table, figure, and in-text statistic produced by code. Never copy-paste from the console.

  • Ideally, one (or a small number) of entry points (run.sh / main.do) that runs it all, top to bottom

Contents of a package (context: FSRDC)#

README.md
README.pdf
code/
  fsrdc/
    01-prepare-data.R
    02-analyze-data.R
    03-create-disclosable-data.R
  public/
    04-create-tables.do
    05-create-figures.do
    06-create-intext.do
data/
  public/
    dist_cepii.dta
    usa_00010.dta
  confidential/
    lbd_2001.dta
    icf_2024.dta
run.sh

Data cleaning code#

All code, whether used in RDC or not, that was used to manipulate the raw data.

Or maybe there is more code…

README.md
README.pdf
code/
  01-public/
    01-prepare-cepii.do
    02-prepare-ipums.do
  02-fsrdc/
    01-prepare-data.R
    02-analyze-data.R
    03-create-disclosable-data.R
  03-public/
    04-create-tables.do
    05-create-figures.do
    06-create-intext.do
run.sh

Analysis code#

All code, whether used in RDC or not.

Figures and Tables#

Create all final figures and tables outside the RDC!

Why?

  • You do not want to go back just to change the layout!

  • Figures are more time-intensive to disclose

A note or two#

  • It helps to keep these distinct phases, including the disclosure-prep stage, in mind when writing code

  • Separating into different phases of the final processing flow can help with organization

  • It also makes disclosure avoidance easier