Skip to content

Instantly share code, notes, and snippets.

View dholstius's full-sized avatar

David Holstius dholstius

  • Bay Area Air Quality Management District
  • San Francisco Bay Area
  • X @dholstius
View GitHub Profile
@dholstius
dholstius / useful-ensurers.R
Created April 9, 2016 18:30
Basic insurance against bad args to .Fortran() calls
eval({
ensure_nonnull <- ensures_that(!is.null(.) ~ "Must not be NULL" )
ensure_nonempty <- ensures_that(length(.) > 0 ~ "Must not be empty", +ensure_nonnull )
ensure_finite <- ensures_that(all(is.finite(.)) ~ "Must be finite", +ensure_nonempty )
ensure_positive <- ensures_that(all(. > 0) ~ "Must be positive", +ensure_finite )
ensure_nonnegative <- ensures_that(all(. >= 0) ~ "Must be positive or zero", +ensure_finite )
ensure_unique <- ensures_that(length(unique(.)) == 1)
})
# Wrapped in `eval({...})` b/c otherwise RStudio will complain about syntax
@dholstius
dholstius / ensurer-fail_with-experiments.R
Last active April 22, 2016 17:13
Using the dot (`.`) in `fail_with`
#
# Context:
#
# https://cran.r-project.org/web/packages/ensurer/vignettes/ensurer.html says:
# "It is also possible to use the dot, ., directly in anonymous error handlers defined directly in the call to e.g. ensure_that."
#
# I must be misunderstanding the statement above!
#
library(ensurer)
@dholstius
dholstius / install-libraries.R
Last active May 18, 2016 18:18
R 3.3 library
# $ brew install libssh2
# $ brew install libgit2
## $ export CMAKE_INCLUDE_PATH="/usr/local/Cellar/libssh2/1.7.0/include"
## $ export CMAKE_LIBRARY_PATH="/usr/local/Cellar/libssh2/1.7.0/lib"
# NOTE: re: git2r: https://github.com/ropensci/git2r/issues/236
install_CRAN <- function (pkg, repos = "http://cran.rstudio.com", verbose = TRUE, ...) {
if (pkg %in% installed.packages()) message(pkg, " is already installed")
else install.packages(pkg, repos = repos, verbose = verbose, ...)
}
@dholstius
dholstius / grouply.R
Last active August 31, 2016 17:11 — forked from dgrtwo/grouply.R
grouply <- function(f, ...) {
groups <- lazyeval::lazy_dots(...)
function(tbl, ...) {
dplyr::group_by_(tbl, .dots = groups) %>%
f(...) %>%
dplyr::ungroup()
}
}
@dholstius
dholstius / rpivotTable-mySum.R
Created September 25, 2016 21:35
Try to replicate Sum aggregator
library(dplyr)
library(htmlwidgets)
library(rpivotTable)
mtcars %>%
rpivotTable(rows = "gear",
cols = c("cyl", "carb"),
vals = "hp",
# Step 1. Make this line accomplish the same thing as the default
@dholstius
dholstius / UScensus2010-blk_data-reprex.R
Created August 25, 2017 16:09
Reprex for UScensus2010 block level demographics
library(UScensus2010)
library(UScensus2010tract)
library(UScensus2010blkgrp)
library(UScensus2010blk)
Cook_tracts <- UScensus2010::county(state = "Illinois", name = "Cook", level = "tract")
Cook_tracts@data[1:8, 1:8]
plot(Cook_tracts)
Cook_blkgrps <- UScensus2010::county(state = "Illinois", name = "Cook", level = "blkgrp")
@dholstius
dholstius / BAAQMD-CCl4_emissions-PY_1997_2016.R
Last active November 10, 2017 17:10
Carbon Tetrachloride (CCl4) Emissions, 1997-2016
PY_CCl4_emission_data <-
PY(1997:2016) %>%
point_source_abated_emissions() %>%
filter_pollutants(list(CCl4 = 60))
chart_data <-
PY_CCl4_emission_data %>%
mutate(fac_h1 = if_else(fac_id == 31, "Dow Chemical", "All Others")) %>%
annual_emissions_by(fac_h1) %>%
group_by(fac_h1)
@dholstius
dholstius / example-DB_find_pollutants.R
Last active October 19, 2019 03:26
DataBank: Find Pollutant Metadata for "Diesel PM"
#
# Turns out that #1350 is the DataBank ID for "Diesel PM".
#
# Here's an "old-school" way to figure that out.
# t0064 contains pollutant metadata.
#
library(Ingres)
help(t0064) # here's some Orange Binder material
view(t0064) # type "Diesel" in the search box (upper right)
@dholstius
dholstius / show138.R
Last active October 22, 2019 21:43
show138
library(inventory)
show138 <- function (
DB_year,
category_id,
verbose = TRUE
) {
#' Define the preferred sorting order.
PONSCO_vars <-
@dholstius
dholstius / BY2011-summarytree.R
Last active October 24, 2019 00:06
Summary Tree Tool, demonstrated using the default BY2011 category hierarchy (and BY2011 emissions).
#'
#' Summary Tree Tool
#'
#' Discover which categories --- or groups of categories --- emit the largest
#' share(s) of a particular pollutant.
#'
#' Version history:
#'
#' - Created 2015-12-01 by dholstius
#' - Last updated 2019-10-23 by dholstius