5 Operaciones sobre la tabla de atributos
5.1 Lectura de una tabla en un data frame
Cada capa tiene su propia tabla de atributos pero también podemos tener solo tablas de atributos, sin elementos geométricos. A continuación, leemos la tabla con los datos del censo de los municipios de Granada para los últimos años.
library(readxl)
t <- read_excel("datos/Granada/2871gr.xlsx",
col_names = TRUE,
trim_ws = TRUE)
class(t)
Como veremos a continuación, podemos trabajar con estos datos para combinarlos con otras capas. Para este caso en particular, nos interesará combinar los datos del censo actuales con los almacenados en la capa de municipios, que contiene los datos del censo desde 2014 a 2018 asociados a información geográfica de los municipios.
5.2 Añadir un campo a la tabla de atributos
Se puede modificar la tabla de atributos de cualquier capa. Una de las modificaciones más frecuentes es añadir un campo nuevo definido a partir de otros campos. En este ejemplo, vamos a modificar la tabla de atributos de la capa que solo contiene esa tabla. Todas las tablas de atributos se modifican de la misma forma.
Añadir un campo a la tabla de atributos equivale a definir una nueva columna en un data frame: definimos el nombre de la nueva columna junto con la expresión para obtener sus valores.
5.3 Unir tablas de atributos
Para unir dos tablas de atributos, estas deben compartir algún campo con valores en común, los nombres de los campos utilizados para definir la unión no es relevante. La unión la realizamos mediante la función merge()
.
A la vista del resultado, podemos eliminar las columnas redundantes, en este caso, la columna Municipio
, y, aunque no sea relevante el orden de las columnas en un data frame, podemos reordenar las columnas. Mediante la función dput()
generamos el vector de nombres de columnas del data frame, utilizamos esa estructura para incluir solo las columnas que deseemos y reordenarlas si lo consideramos conveniente.
censo <- merge(x = censo, y = t, by.x = "cod_mun", by.y = "Codigo", all.x = TRUE)
censo
dput(names(censo))
censo <- censo[, c("cod_mun", "municipio", "provincia", "cod_ent",
"shape_leng", "shape_area", "Superficie",
"Ce2014T", "Ce2014H", "Ce2014M",
"Ce2015T", "Ce2015H", "Ce2015M",
"Ce2016T", "Ce2016H", "Ce2016M",
"Ce2017T", "Ce2017H", "Ce2017M",
"Ce2018T", "Ce2018H", "Ce2018M",
"Ce2019T", "Ce2019H", "Ce2019M",
"Ce2020T", "Ce2020H", "Ce2020M",
"Ce2021T", "Ce2021H", "Ce2021M",
"Ce2022T", "Ce2022H", "Ce2022M",
"Ce2023T", "Ce2023H", "Ce2023M")]
censo
5.4 Consultas sobre la tabla de atributos
Supongamos que queremos seleccionar los municipios cuya población haya aumentado durante el último año. Podemos definir consultas de filtrado de filas sobre la tabla de atributos de una capa: son operaciones de filtrado sobre un data frame.
En el ejemplo siguiente, definimos el filtrado directamente y también definiendo un nuevo campo y, a continuación, definir el filtrado sobre él.
5.5 Guardar una capa
Para guardar una capa en un archivo, indicamos la variable que contiene la capa y el archivo donde queremos que se guarde, como se muestra en el ejemplo siguiente. Según la extensión del archivo la función st_write()
determina el formato a utilizar para almacenar los datos. El parámetro delete_dsn
permite sobreescribir un archivo previamente guardado.