Andrew,
What you want is only sort of clear to me.
You seem to want to join a table with itself (hence "self_join"), but I'm not sure that makes a lot of sense.
If you want to take values from two tables and subtract them then you should have two tables, each with a date column and a value column.
library(tidyverse)
library(lubridate)
firstyear <- tibble(date = as.Date(as.Date("2011-06-30"):as.Date("2011-07-04"), origin="1970-01-01"), value = runif(5))
secondyear <-tibble(date = as.Date(as.Date("2012-06-30"):as.Date("2012-07-04"), origin="1970-01-01"), value = runif(5))
# convert date to joinable numerics
firstyear <-
mutate(month = month(date), day = day(date))
secondyear <-
mutate(month = month(date), day = day(date))
# look at join
full_join(firstyear, secondyear, by = c("month", "day")) %>%
# subtract firstyear$value from secondyear$value
mutate(subtractedvalue = value.y - value.x)
HTH,
B