Skip to content

Instantly share code, notes, and snippets.

View pbaylis's full-sized avatar

Patrick Baylis pbaylis

View GitHub Profile
@pbaylis
pbaylis / 00_spatial_interpolation.R
Last active February 27, 2022 02:16
Sample R spatial interpolation code. First fills in missing obs using CDF method, then interpolates to a grid. Useful for converting weather station to gridded data. Uses IDW but that could easily be changed.
library(foreign)
library(data.table)
library(zoo)
library(Hmisc)
library(gstat)
library(sp)
rm(list=ls())
# Fill in missing data ----
sm.thresh <- 0.9 # Min proportion of obs that must be in a station-month
@pbaylis
pbaylis / gen_relative_humidity.ado
Created September 11, 2015 12:23
Stata program to get relative humidity given temperature and dew point
program define gen_relative_humidity
* Calculate relative humidity given dry bulb temperature and dew point
syntax, DRYbulbtemp(varname) DEWpoint(varname) [GENerate(string)]
* Inputs in F
local T `drybulbtemp'
local TD `dewpoint'
if "`generate'" == "" {
local generate "rel_humidity"
}
@pbaylis
pbaylis / gen_heat_index.ado
Last active September 11, 2015 12:39
Stata program to get heat index for given dry bulb temperature and relative humidity
program define gen_heat_index
* Calculat heat index
* See https://en.wikipedia.org/wiki/Heat_index. Note that there is no exact heat index formula
* since it is defined by the table. There are approximations, but this code uses the table itself.
* The only modification is that I cap at 140.
syntax, DRYbulbtemp(varname) RELativehumidity(varname) [GENerate(string)]
if "`generate'" == "" {
local generate "heat_index"
}
@pbaylis
pbaylis / makebins.ado
Last active September 14, 2015 22:32
Stata program to generate dummy variable bins of a variable. Stata program to generate dummy variable bins of a variable. Bottom and top bins run from edge to negative infinity and infinity, respectively. Also generates good-looking custom labels for regression tables.
program define makebins, rclass
syntax varname, [PREfix(name) min(real 0) max(real 100) step(real 5) SEQuential DROPbin(real 70)]
local var `varlist'
if mod(`max' - `min',`step') != 0 {
di as error "Warning: Step size `step' does not divide evenly into range. Top bin may extend beyond `max'."
}
* Declare prefix
if "`prefix'" != "" {