After having checked that these columns are indeed the same, you could just remove them before doing the join
if (all(df1[,c('element', 'day')] == df2[,c('element', 'day')]))
df <- left_join(df1[,setdiff(colnames(df1),c('element', 'day'))], df2, by = "id")
else
stop("Should not happen!?")