

{"id":3127,"date":"2014-11-26T01:47:33","date_gmt":"2014-11-26T06:47:33","guid":{"rendered":"http:\/\/rud.is\/b\/?p=3127"},"modified":"2018-03-07T16:44:05","modified_gmt":"2018-03-07T21:44:05","slug":"visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions","status":"publish","type":"post","link":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","title":{"rendered":"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions"},"content":{"rendered":"<blockquote><p><b>UPDATE:<\/b> You can now run this as a local Shiny app by entering <code>shiny::runGist(\"95ec24c1b0cb433a76a5\", launch.browser=TRUE)<\/code> at an R prompt (provided all the dependent libraries (below) are installed) or use it interactively over at <a href=\"https:\/\/hrbrmstr.shinyapps.io\/shinysnowfall\/\">Shiny Apps<\/a>.<\/p><\/blockquote>\n<p>The impending arrival of the first real snowfall of the year in my part of Maine got me curious about what the most likely &#8220;first snow&#8221; dates are for my region. The U.S. Historical Climatology Network (USHCN) maintains [historical daily climate records](http:\/\/cdiac.ornl.gov\/epubs\/ndp\/ushcn\/daily_doc.html) for each station in each state and has data (for some stations) going back as far as the 1800&#8217;s. A quick look at their [data files](http:\/\/cdiac.ornl.gov\/ftp\/ushcn_daily\/) indicated that they would definitely help satiate my curiosity (and make for a late night of cranking out some R code and ggplot visualizations).<\/p>\n<p>To start, we&#8217;ll need a bit more than base R to get the job done:<\/p>\n<pre lang=\"rsplus\">library(pbapply)\r\nlibrary(data.table)\r\nlibrary(dplyr)\r\nlibrary(ggplot2)\r\nlibrary(grid)\r\nlibrary(gridExtra)\r\nlibrary(stringi)<\/pre>\n<p>In all honesty, `pbapply`, `dplyr` and `stringi` are not necessary, but they definitely make life easier by (respectively) giving us:<\/p>\n<p>&#8211; free progress bars for `*apply` operations,<br \/>\n&#8211; high efficacy data manipulation idioms, and<br \/>\n&#8211; a handy utility for converting strings to title case.<\/p>\n<p>With setup out of the way, the first real task is to see which observer station is closest to my area. To figure that out we need to read in the station data file which is, sadly, in fixed-width format. Some stations have `#` characters in their titles, to we have to account for that when we call `read.fwf`. After reading in the station database we use a naive\u2013but-usable distance calculation to find the closest station:<\/p>\n<pre lang=\"rsplus\">\r\nstations <- read.fwf(\"data\/ushcn-stations.txt\",\r\n                     widths=c(6, 9, 10, 7, 3, 31, 7, 7, 7, 3),\r\n                     col.names=c(\"coop_id\", \"latitude\", \"longitude\", \"elevation\",\r\n                                 \"state\", \"name\", \"component_1\", \"component_2\",\r\n                                 \"component_3\", \"utc_offset\"),\r\n                     colClasses=c(\"character\", \"numeric\", \"numeric\", \"numeric\",\r\n                                  \"character\", \"character\", \"character\", \"character\",\r\n                                  \"character\", \"character\"),\r\n                     comment.char=\"\", strip.white=TRUE)\r\n\r\n# not a great circle, but it gets the job done here\r\nclosestStation <- function(stations, lat, lon) {\r\n  index <- which.min(sqrt((stations$latitude-lat)^2 +\r\n                          (stations$longitude-lon)^2))\r\n  stations[index,]\r\n}\r\n\r\n# what's the closest station?\r\nclosestStation(stations, 43.2672, -70.8617)\r\n\r\n##     coop_id latitude longitude elevation state   name component_1 component_2 component_3 utc_offset\r\n633  272174    43.15    -70.95      24.4    NH DURHAM      ------      ------      ------         +5<\/pre>\n<p>As a Mainer, I'm not thrilled that this is the actual, closest station, so we'll also see what the closest one is in Maine:<\/p>\n<pre lang=\"rsplus\">closestStation(stations %>% filter(state==\"ME\"), 43.2672, -70.8617)\r\n##    coop_id latitude longitude elevation state             name component_1 component_2 component_3 utc_offset\r\n10  176905  43.6497  -70.3003      13.7    ME PORTLAND JETPORT      ------      ------      ------         +5<\/pre>\n<p>The analysis is easy enough to do for both, so we'll first take a look at Durham, New Hampshire then do the exact same valuation for Portland, Maine.<\/p>\n<p>Despite being fixed-width, the station database was not too difficult to wrangle. The state-level files that contain the readings are another matter:<\/p>\n<p><center><\/p>\n<table style=\"margin-bottom:20px;\">\n<tbody>\n<tr>\n<th class=\"c-1\">Variable<\/th>\n<th class=\"c-1\">Columns<\/th>\n<th class=\"c-2\">Type<\/th>\n<\/tr>\n<tr>\n<td>COOP ID<\/td>\n<td>1-6<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>YEAR<\/td>\n<td>7-10<\/td>\n<td>Integer<\/td>\n<\/tr>\n<tr>\n<td>MONTH<\/td>\n<td>11-12<\/td>\n<td>Integer<\/td>\n<\/tr>\n<tr>\n<td>ELEMENT<\/td>\n<td>13-16<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>VALUE1<\/td>\n<td>17-21<\/td>\n<td>Integer<\/td>\n<\/tr>\n<tr>\n<td>MFLAG1<\/td>\n<td>22<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>QFLAG1<\/td>\n<td>23<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>SFLAG1<\/td>\n<td>24<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>VALUE2<\/td>\n<td>25-29<\/td>\n<td>Integer<\/td>\n<\/tr>\n<tr>\n<td>MFLAG2<\/td>\n<td>30<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>QFLAG2<\/td>\n<td>31<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>SFLAG2<\/td>\n<td>32<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>...<\/td>\n<td>...<\/td>\n<td>...<\/td>\n<\/tr>\n<tr>\n<td>VALUE31<\/td>\n<td>257-261<\/td>\n<td>Integer<\/td>\n<\/tr>\n<tr>\n<td>MFLAG31<\/td>\n<td>262<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>QFLAG31<\/td>\n<td>263<\/td>\n<td>Character<\/td>\n<\/tr>\n<tr>\n<td>SFLAG31<\/td>\n<td>264<\/td>\n<td>Character<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/center><\/p>\n<p>We have fixed-width, wide-format records with 31 days for each month, which proves the existence of truly insidious people in the world. Rather than use `read.fwf` again, we'll take a different approach (since we ultimately need the data in long format) and use `readLines` to read in all the records from the NH data file, then filter out everything but snowfall entries from the station we're interested in. <\/p>\n<p>Next, we setup nested `lapply` calls to build a long data frame from each month then combine them all together into a single data frame:<\/p>\n<pre lang=\"rsplus\">snow <- readLines(\"data\/state27_NH.txt\")\r\n\r\nsnow <- grep(\"SNOW\", snow, value=TRUE)\r\nsnow <- grep(\"^272174\", snow, value=TRUE)\r\n\r\nsnow_dat <- rbindlist(pblapply(snow, function(x) {\r\n\r\n  rbindlist(lapply(1:31, function(i) {\r\n\r\n    # record format described here:\r\n    # http:\/\/cdiac.ornl.gov\/ftp\/ushcn_daily\/data_format.txt\r\n\r\n    start <- 17 + (i-1)*8\r\n\r\n    list(coop_id=substr(x, 1, 6),\r\n         date=sprintf(\"%s-%02d-%02d\", substr(x, 7, 10), as.numeric(substr(x, 11, 12)), i),\r\n         element=substr(x, 13, 16),\r\n         value=as.numeric(substr(x, start, start+4)),\r\n         mflag=substr(x, start+5, start+5),\r\n         qflag=substr(x, start+6, start+6),\r\n         sflag=substr(x, start+7, start+7))\r\n\r\n  }))\r\n\r\n}))<\/pre>\n<p>Now, we'll clean up the records even further by removing invalid entries (those with a `value` == `-9999`) and convert record dates to actual `Date` objects and filter out invalid dates:<\/p>\n<pre lang=\"rsplus\">\r\nsnow_dat <- snow_dat %>% filter(value != -9999)\r\n\r\n# since the data file has 31 days for each records regardless of whether\r\n# that's valid or not we do a shortcut to remove invalid dates by doing the\r\n# a vectorized Date conversion, then removing records with NA dates\r\n\r\nsnow_dat$date <- as.Date(snow_dat$date)\r\nsnow_dat <- snow_dat %>% filter(!is.na(date))\r\n\r\n# having the year extracted is handy for filtering\r\nsnow_dat$year <- format(snow_dat$date, \"%Y\")<\/pre>\n<p>Given that Winter in the U.S. spans across two calendar years, we need a way to keep dates in January-May associated with the previous year (yes, that adds an inherent assumption that no first snow is in June, which might not hold true for Alaska). To facilitate this, we'll convert each date to its corresponding day of year value then add the number of total days in the start year to those values for all months <= May. We really do need to do this, too, since there are many cases where the first snowfall will be in January-March for many states.\n\n\n\n<pre lang=\"rsplus\">snow_dat$doy <- as.numeric(format(snow_dat$date, \"%j\"))\r\nsnow_dat$doy <- ifelse(snow_dat$doy<=180,\r\n                       snow_dat$doy + as.numeric(format(as.Date(sprintf(\"%s-12-31\", snow_dat$year)), \"%j\")),\r\n                       snow_dat$doy)<\/pre>\n<p>Now, the fun begins. We use (mostly) `dplyr` to extract the first snowfall day from each year, then make a dot-line plot from the data:<\/p>\n<pre lang=\"rsplus\">\r\nfirst <- snow_dat %>%\r\n  filter(value>0) %>%                           # ignore 0 values\r\n  filter(date>=as.Date(\"1950-01-01\")) %>%       # start at 1950 (arbitrary)\r\n  merge(stations, by=\"coop_id\", all.x=TRUE) %>% # merge station details\r\n  group_by(coop_id, year) %>%                   # group by station and year\r\n  arrange(doy) %>%                              # sort by our munged day of year\r\n  filter(row_number(doy) == 1) %>%              # grab the first entry by group\r\n  select(name, state, date, value, doy)         # we only need some variables\r\n\r\ntitle_1 <- sprintf(\"First observed snowfall (historical) at %s, %s\", stri_trans_totitle(unique(first$name)), unique(first$state))\r\n\r\ngg <- ggplot(first, aes(y=year, x=doy))\r\ngg <- gg + geom_segment(aes(xend=min(first$doy)-20, yend=year), color=\"#9ecae1\", size=0.25)\r\ngg <- gg + geom_point(aes(color=coop_id), shape=8, size=3, color=\"#3182bd\")\r\ngg <- gg + geom_text(aes(label=format(date, \"%b-%d\")), size=3, hjust=-0.2)\r\ngg <- gg + scale_x_continuous(expand=c(0, 0), limits=c(min(first$doy)-20, max(first$doy)+20))\r\ngg <- gg + labs(x=NULL, y=NULL, title=title_1)\r\ngg <- gg + theme_bw()\r\ngg <- gg + theme(legend.position=\"none\")\r\ngg <- gg + theme(panel.grid=element_blank())\r\ngg <- gg + theme(panel.border=element_blank())\r\ngg <- gg + theme(axis.ticks.x=element_blank())\r\ngg <- gg + theme(axis.ticks.y=element_blank())\r\ngg <- gg + theme(axis.text.x=element_blank())\r\ngg <- gg + theme(axis.text.y=element_text(color=\"#08306b\"))\r\nby_year <- gg<\/pre>\n<p>While that will help us see the diversity across years, we have to do quite a bit of eye tracking to get the most likely date range for the first snowfall, so we'll add a boxplot into the mix and use `summary` to figure out the quartiles (for labeling the chart) for the actual date values:<\/p>\n<pre lang=\"rsplus\">wx_range <- summary(as.Date(format(first$date, \"2013-%m-%d\")))\r\nnames(wx_range) <- NULL\r\nmin_wx <- gsub(\"2013-\", \"\", wx_range[2])\r\nmax_wx <- gsub(\"2013-\", \"\", wx_range[5])\r\n\r\ntitle_2 <- sprintf(\"Most likely first snowfall will be between %s &#038; %s\", min_wx, max_wx)\r\n\r\ngg <- ggplot(first %>% mutate(name=\"0000\"), aes(name, doy))\r\ngg <- gg + geom_boxplot(fill=\"#3182bd\", color=\"#08306b\", outlier.colour=\"#08306b\")\r\ngg <- gg + scale_y_continuous(expand=c(0, 0),\r\n                              limits=c(min(first$doy)-20, max(first$doy)+20))\r\ngg <- gg + coord_flip()\r\ngg <- gg + labs(x=NULL, y=NULL, title=title_2)\r\ngg <- gg + theme_bw()\r\ngg <- gg + theme(legend.position=\"none\")\r\ngg <- gg + theme(panel.grid=element_blank())\r\ngg <- gg + theme(panel.border=element_blank())\r\ngg <- gg + theme(axis.ticks.x=element_blank())\r\ngg <- gg + theme(axis.text.x=element_blank())\r\ngg <- gg + theme(axis.ticks.y=element_line(color=\"white\"))\r\ngg <- gg + theme(axis.text.y=element_text(color=\"white\"))\r\ngg <- gg + theme(plot.title=element_text(size=11))\r\nbox_wx <- gg<\/pre>\n<p>Finally, we'll combine them together to get the finished product:<\/p>\n<pre lang=\"rsplus\">grid.arrange(by_year, box_wx, nrow=2, heights=unit(c(0.9, 0.1), \"npc\"))<\/pre>\n<p><center><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3128\" data-permalink=\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/nh-2\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=450%2C700&amp;ssl=1\" data-orig-size=\"450,700\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"nh-2\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=192%2C300&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=450%2C700&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?resize=450%2C700&#038;ssl=1\" alt=\"nh-2\" width=\"450\" height=\"700\" class=\"aligncenter size-full wp-image-3128\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?w=450&amp;ssl=1 450w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?resize=96%2C150&amp;ssl=1 96w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?resize=192%2C300&amp;ssl=1 192w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/center><\/p>\n<p>And, do the same for Portland:<\/p>\n<p><center><a href=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"3129\" data-permalink=\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/both\/\" data-orig-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?fit=900%2C700&amp;ssl=1\" data-orig-size=\"900,700\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"both\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?fit=300%2C233&amp;ssl=1\" data-large-file=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?fit=510%2C396&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?resize=510%2C396&#038;ssl=1\" alt=\"both\" width=\"510\" height=\"396\" class=\"aligncenter size-large wp-image-3129\" srcset=\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?resize=530%2C412&amp;ssl=1 530w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?resize=150%2C116&amp;ssl=1 150w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?resize=300%2C233&amp;ssl=1 300w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?resize=535%2C416&amp;ssl=1 535w, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/both.png?w=900&amp;ssl=1 900w\" sizes=\"auto, (max-width: 510px) 100vw, 510px\" \/><\/a><span style=\"font-size:8px\">Click for larger<\/span><\/center><\/p>\n<p>There are many more analyses and visualizations that can be performed on these data sets, but be wary when creating them as I've seen a few files with fixed-width formatting errors and have also noticed missing records for some observer stations.<\/p>\n<p>You can find the complete, commented code up on [github](https:\/\/github.com\/hrbrmstr\/snowfirst).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UPDATE: You can now run this as a local Shiny app by entering shiny::runGist(&#8220;95ec24c1b0cb433a76a5&#8221;, launch.browser=TRUE) at an R prompt (provided all the dependent libraries (below) are installed) or use it interactively over at Shiny Apps. The impending arrival of the first real snowfall of the year in my part of Maine got me curious about [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[24,677,678,673,674,707,91,680],"tags":[810],"class_list":["post-3127","post","type-post","status-publish","format-standard","hentry","category-charts-graphs","category-data-analysis-2","category-data-visualization","category-datavis-2","category-dataviz","category-maine","category-r","category-weather","tag-post"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Visualizing Historical &amp; Most-likely First Snowfall Dates for U.S. Regions - rud.is<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Visualizing Historical &amp; Most-likely First Snowfall Dates for U.S. Regions - rud.is\" \/>\n<meta property=\"og:description\" content=\"UPDATE: You can now run this as a local Shiny app by entering shiny::runGist(&quot;95ec24c1b0cb433a76a5&quot;, launch.browser=TRUE) at an R prompt (provided all the dependent libraries (below) are installed) or use it interactively over at Shiny Apps. The impending arrival of the first real snowfall of the year in my part of Maine got me curious about [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\" \/>\n<meta property=\"og:site_name\" content=\"rud.is\" \/>\n<meta property=\"article:published_time\" content=\"2014-11-26T06:47:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-03-07T21:44:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png\" \/>\n<meta name=\"author\" content=\"hrbrmstr\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"hrbrmstr\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\"},\"author\":{\"name\":\"hrbrmstr\",\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"headline\":\"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions\",\"datePublished\":\"2014-11-26T06:47:33+00:00\",\"dateModified\":\"2018-03-07T21:44:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\"},\"wordCount\":614,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png\",\"keywords\":[\"post\"],\"articleSection\":[\"Charts &amp; Graphs\",\"Data Analysis\",\"Data Visualization\",\"DataVis\",\"DataViz\",\"maine\",\"R\",\"Weather\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\",\"url\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\",\"name\":\"Visualizing Historical & Most-likely First Snowfall Dates for U.S. Regions - rud.is\",\"isPartOf\":{\"@id\":\"https:\/\/rud.is\/b\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png\",\"datePublished\":\"2014-11-26T06:47:33+00:00\",\"dateModified\":\"2018-03-07T21:44:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=450%2C700&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=450%2C700&ssl=1\",\"width\":450,\"height\":700},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/rud.is\/b\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/rud.is\/b\/#website\",\"url\":\"https:\/\/rud.is\/b\/\",\"name\":\"rud.is\",\"description\":\"&quot;In God we trust. All others must bring data&quot;\",\"publisher\":{\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/rud.is\/b\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886\",\"name\":\"hrbrmstr\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"url\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\",\"width\":460,\"height\":460,\"caption\":\"hrbrmstr\"},\"logo\":{\"@id\":\"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1\"},\"description\":\"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7\",\"sameAs\":[\"http:\/\/rud.is\"],\"url\":\"https:\/\/rud.is\/b\/author\/hrbrmstr\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Visualizing Historical & Most-likely First Snowfall Dates for U.S. Regions - rud.is","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","og_locale":"en_US","og_type":"article","og_title":"Visualizing Historical & Most-likely First Snowfall Dates for U.S. Regions - rud.is","og_description":"UPDATE: You can now run this as a local Shiny app by entering shiny::runGist(\"95ec24c1b0cb433a76a5\", launch.browser=TRUE) at an R prompt (provided all the dependent libraries (below) are installed) or use it interactively over at Shiny Apps. The impending arrival of the first real snowfall of the year in my part of Maine got me curious about [&hellip;]","og_url":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","og_site_name":"rud.is","article_published_time":"2014-11-26T06:47:33+00:00","article_modified_time":"2018-03-07T21:44:05+00:00","og_image":[{"url":"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png","type":"","width":"","height":""}],"author":"hrbrmstr","twitter_card":"summary_large_image","twitter_misc":{"Written by":"hrbrmstr","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#article","isPartOf":{"@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/"},"author":{"name":"hrbrmstr","@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"headline":"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions","datePublished":"2014-11-26T06:47:33+00:00","dateModified":"2018-03-07T21:44:05+00:00","mainEntityOfPage":{"@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/"},"wordCount":614,"commentCount":4,"publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"image":{"@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png","keywords":["post"],"articleSection":["Charts &amp; Graphs","Data Analysis","Data Visualization","DataVis","DataViz","maine","R","Weather"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","url":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/","name":"Visualizing Historical & Most-likely First Snowfall Dates for U.S. Regions - rud.is","isPartOf":{"@id":"https:\/\/rud.is\/b\/#website"},"primaryImageOfPage":{"@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage"},"image":{"@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage"},"thumbnailUrl":"https:\/\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png","datePublished":"2014-11-26T06:47:33+00:00","dateModified":"2018-03-07T21:44:05+00:00","breadcrumb":{"@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#primaryimage","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=450%2C700&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2014\/11\/nh-2.png?fit=450%2C700&ssl=1","width":450,"height":700},{"@type":"BreadcrumbList","@id":"https:\/\/rud.is\/b\/2014\/11\/26\/visualizing-historical-most-likely-first-snowfall-dates-for-u-s-regions\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/rud.is\/b\/"},{"@type":"ListItem","position":2,"name":"Visualizing Historical &#038; Most-likely First Snowfall Dates for U.S. Regions"}]},{"@type":"WebSite","@id":"https:\/\/rud.is\/b\/#website","url":"https:\/\/rud.is\/b\/","name":"rud.is","description":"&quot;In God we trust. All others must bring data&quot;","publisher":{"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/rud.is\/b\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/rud.is\/b\/#\/schema\/person\/d7cb7487ab0527447f7fda5c423ff886","name":"hrbrmstr","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","url":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","contentUrl":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1","width":460,"height":460,"caption":"hrbrmstr"},"logo":{"@id":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2023\/10\/ukr-shield.png?fit=460%2C460&ssl=1"},"description":"Don't look at me\u2026I do what he does \u2014 just slower. #rstats avuncular \u2022 ?Resistance Fighter \u2022 Cook \u2022 Christian \u2022 [Master] Chef des Donn\u00e9es de S\u00e9curit\u00e9 @ @rapid7","sameAs":["http:\/\/rud.is"],"url":"https:\/\/rud.is\/b\/author\/hrbrmstr\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p23idr-Or","jetpack_likes_enabled":true,"jetpack-related-posts":[{"id":2846,"url":"https:\/\/rud.is\/b\/2013\/12\/27\/points-polygons-and-power-outages\/","url_meta":{"origin":3127,"position":0},"title":"Points, Polygons and Power Outages","author":"hrbrmstr","date":"2013-12-27","format":false,"excerpt":"Most of my free coding time has been spent tweaking a D3-based live power outage tracker for Central Maine Power customers (there's also a woefully less-featured Shiny app for it, too). There is some R associated with the D3 vis, but it's limited to a cron job that's makes the\u2026","rel":"","context":"In &quot;Data Visualization&quot;","block_context":{"text":"Data Visualization","link":"https:\/\/rud.is\/b\/category\/data-visualization\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2803,"url":"https:\/\/rud.is\/b\/2013\/11\/27\/mapping-power-outages-in-maine-dynamically-with-shinyr\/","url_meta":{"origin":3127,"position":1},"title":"Mapping Power Outages in Maine Dynamically with Shiny\/R","author":"hrbrmstr","date":"2013-11-27","format":false,"excerpt":"I decided to forego the D3 map mentioned in the previous post in favor of a Shiny one since I had 90% of the mapping code written. I binned the ranges into three groups, changed the color over to something more pleasant (with RColorBrewer), added an interactive table for the\u2026","rel":"","context":"In &quot;data driven security&quot;","block_context":{"text":"data driven security","link":"https:\/\/rud.is\/b\/category\/data-driven-security\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/162.243.111.4_3838_outages_.png?fit=470%2C735&ssl=1&resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2793,"url":"https:\/\/rud.is\/b\/2013\/11\/27\/mapping-power-outages-in-maine-with-r\/","url_meta":{"origin":3127,"position":2},"title":"Mapping Power Outages In Maine With R","author":"hrbrmstr","date":"2013-11-27","format":false,"excerpt":"UPDATE: A Shiny (dynamic) version of this is now available. We had yet-another power outage this morning due to the weird weather patterns of the week and it was the final catalyst I needed to crank out some R code to map the affected counties. Central Maine Power provides an\u2026","rel":"","context":"In &quot;Charts &amp; Graphs&quot;","block_context":{"text":"Charts &amp; Graphs","link":"https:\/\/rud.is\/b\/category\/charts-graphs\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Plot_Zoom.png?fit=530%2C680&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Plot_Zoom.png?fit=530%2C680&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Plot_Zoom.png?fit=530%2C680&ssl=1&resize=525%2C300 1.5x"},"classes":[]},{"id":5565,"url":"https:\/\/rud.is\/b\/2017\/04\/01\/r%e2%81%b4-snow-day-facets\/","url_meta":{"origin":3127,"position":3},"title":"R\u2076 \u2014 Snow Day Facets","author":"hrbrmstr","date":"2017-04-01","format":false,"excerpt":"Back in 2014 I blogged about first snowfall dates for a given U.S. state. It's April 1, 2017 and we're slated to get 12-18\" of snow up here in Maine and @mrshrbrmstr asked how often this \u2014\u00a0snow in May \u2014 has occurred near us. As with all of these \"R\u2076\u2026","rel":"","context":"In &quot;ggplot&quot;","block_context":{"text":"ggplot","link":"https:\/\/rud.is\/b\/category\/ggplot\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/04\/Cursor_and___projects_snowfirst_-_master_-_RStudio.png?fit=1200%2C1098&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/04\/Cursor_and___projects_snowfirst_-_master_-_RStudio.png?fit=1200%2C1098&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/04\/Cursor_and___projects_snowfirst_-_master_-_RStudio.png?fit=1200%2C1098&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/04\/Cursor_and___projects_snowfirst_-_master_-_RStudio.png?fit=1200%2C1098&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/04\/Cursor_and___projects_snowfirst_-_master_-_RStudio.png?fit=1200%2C1098&ssl=1&resize=1050%2C600 3x"},"classes":[]},{"id":2816,"url":"https:\/\/rud.is\/b\/2013\/11\/28\/one-more-timemapping-maine-power-outages-with-d3\/","url_meta":{"origin":3127,"position":4},"title":"One More Time\u2026Mapping Maine Power Outages with D3","author":"hrbrmstr","date":"2013-11-28","format":false,"excerpt":"It started with a local R version and migrated to a Shiny version and is now in full D3 glory. Some down time gave me the opportunity to start a basic D3 version of the outage map, but it needs a bit of work as it relies on a page\u2026","rel":"","context":"In &quot;d3&quot;","block_context":{"text":"d3","link":"https:\/\/rud.is\/b\/category\/d3\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2013\/11\/Central_Maine_Power_Live_Outage_Map-2.png?fit=757%2C649&ssl=1&resize=700%2C400 2x"},"classes":[]},{"id":6930,"url":"https:\/\/rud.is\/b\/2017\/11\/02\/yet-another-power-outages-post-full-tidyverse-edition\/","url_meta":{"origin":3127,"position":5},"title":"Yet-Another-Power Outages Post : Full Tidyverse Edition","author":"hrbrmstr","date":"2017-11-02","format":false,"excerpt":"This past weekend, violent windstorms raged through New England. We \u2014 along with over 500,000 other Mainers \u2014 went \"dark\" in the wee hours of Monday morning and (this post was published on Thursday AM) we still have no utility-provided power nor high-speed internet access. The children have turned iFeral,\u2026","rel":"","context":"In &quot;R&quot;","block_context":{"text":"R","link":"https:\/\/rud.is\/b\/category\/r\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/plot_zoom_png.png?fit=1200%2C628&ssl=1&resize=350%2C200","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/plot_zoom_png.png?fit=1200%2C628&ssl=1&resize=350%2C200 1x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/plot_zoom_png.png?fit=1200%2C628&ssl=1&resize=525%2C300 1.5x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/plot_zoom_png.png?fit=1200%2C628&ssl=1&resize=700%2C400 2x, https:\/\/i0.wp.com\/rud.is\/b\/wp-content\/uploads\/2017\/11\/plot_zoom_png.png?fit=1200%2C628&ssl=1&resize=1050%2C600 3x"},"classes":[]}],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/3127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/comments?post=3127"}],"version-history":[{"count":0,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/posts\/3127\/revisions"}],"wp:attachment":[{"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/media?parent=3127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/categories?post=3127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rud.is\/b\/wp-json\/wp\/v2\/tags?post=3127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}