D.1 Carga de datos y creación del objeto sf:

En este caso, cómo es habitual, los datos están almacenados en un data.frame y la recomendación es emplear st_as_sf() para convertirlos a un objeto sf (Sección 2.2):

load("datos/aquifer.RData")
library(sf)
aquifer$head <- aquifer$head/100 # en cientos de pies (escala más manejable...)
aquifer_sf <- st_as_sf(aquifer, coords = c("lon", "lat"), remove = FALSE, agr = "constant")

Por comodidad se establece remove = FALSE para mantener las coordenadas como posibles variables explicativas (el objeto con las observaciones debe contener todas las variables explicativas incluidas en el modelo de tendencia; también el objeto con las posiciones de predicción).

En caso necesario también habría que establecer el CRS (Sección 2.2.1) e incluso podría ser necesario transformar los datos a coordenadas proyectadas mediante st_transform()(Sección 2.4.2).