I believe those lags are your data in years. If I understood your data correctly, 0.0015 lag is ~53 15-minute intervals. You need to determine the exact lags for those spikes to identify the right intervals. Say for example, if the spike landed on 0.0015 (~53 15-minute intervals), 0.0020 (~70 15-minute intervals), and 0.0025 (~88 15-minute intervals) it means that your data appears to have a seasonal pattern about 18 15-minute intervals apart or 270 minutes or 4.5 hours.
newdata_timeseries is your data frame. You can multiply your lags by 35,040, because there are those many 15 minute intervals in a year.
acf_newdata_timeseries <- acf(newdata_timeseries)
acf_newdata_timeseries`$`lag <- acf_newdata_timeseries`$`lag * 35040
plot(acf_newdata_timeseries, xlab="Lag (15 minute intervals)")
To detect seasonality, I found the Ljung-Box test sufficient in most cases. Its null hypothesis is that all of the autocorrelation functions out of n lags are zero. So, if the p-value is less than 0.05 then you can say that there is seasonality, since data is autocorrelated on some lags.
Box.test(newdata_timeseries,lag=<You can insert here the max number of lags from the plot>,