I took the Stata programming class at the Johns Hopkins School of Public Health during grad school It was taught by Dorry Segev. If you are at the school, I highly, highly, highly recommend taking it and doing all of the assignments in term 4. It saved me many hours of labor in writing up my thesis. It’s a phenomenal class.
One of the biggest takeaways from the class was using a .do file as much as possible when interacting with Stata. As in 99% of the time.
Below is the stock header and footer of every .do file that I make. Steps to success:
- Open a blank .do file
- Paste the code from below
- Save it in the same folder as your dataset
- Close Stata
- In Windows File Explorer, find your new .do file and open it up then get rolling.
By opening the .do file through file explorer, Stata automatically knows which folder you are working in. Then you don’t have to write the entire directory to start. For example, you can write:
use data.dta, clear
…and not
use c:\windows\users\myname\work\research\001project\data\data.dta, clear
******************************************************************************** ******************************HEADER STARTS HERE******************************** ******************************************************************************** // at the beginning of every do file: macro drop _all // remove macros from previous work, if any capture log close // Close any open logs. Capture will ignore a command that gives // an error. So if there isn't an open log, instead of giving you // an error and stopping here, it'll just move onto the next line. clear all // clean the belfries drop _all // get rid of everything! log using output.log, replace text // change the name of this to whatever you'd like // The purpose of this .do file is... [say why you are writing this do file] version 15 // Every version of Stata is slightly different, but all are backwards // compatible with previous ones. If you open up this do file with a way // newer version, it'll run it in version 14 compatibility mode. Change // this to the current version of Stata that you are using. This will // also keep your code from running on older versions of stata that will // break with new code that it isn't designed to handle. set more off, permanently // so you don't have to keep clicking through stata to // keep it running set linesize 255 // this keeps longer lines from getting clipped. Helpful for making // tables. capture shell md pictures // this makes a folder called pictures in the Windows // version of stata. Save your pictures here. capture shell mkdir pictures // ditto, except in the Mac version.
******************************************************************************** ******************************IMPORT DATA HERE********************************** ******************************************************************************** * working with stata dta file: // use "data.dta", clear // change this with whatever data file you are using and // remove the double slashes. Note: putting quotes around // filenames lets you open files with spaces in the name. * working with excel file: // CLOSE YOUR EXCEL FILE BEFORE TRYING TO OPEN IT OR STATA WILL STOP HERE. // import excel using "name of file.xlsx", firstrow clear // firstrow imports // the first row of the sheet as variable. Change to the // appropriate name and delete the double lines as needed. * working with csv file: // import delim "name of file.csv", varname(1) clear // varname imports the # // designated as the variables. ******************************************************************************** ******************************CODE STARTS HERE********************************** ******************************************************************************** // ... you get the idea
******************************************************************************** ******************************FOOTER STARTS HERE******************************** ******************************************************************************** // At the very end of your .do file: log close // Fin.