In your original data frame, you had separate columns for year, month and day. With dplyr joins, you can join by multiple columns, eg something like
left_join(df1, df2, by = c(Year, Month, Day))
In fact if you didn't mention a value for the by argument, dplyr joins will look for all identically named variables in both data frames, and join by those. (Thought I'd share just in case you wanted to skip the Date creation step)