es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Combine los polígonos con la misma geometría en un solo polígono, manteniendo sus atributos en el polígono resultante.

Tengo un objeto de clase “sf”, donde se encuentran algunos polígonos:

id  use_type   area
1   housing    100
1   farming    200
2   farming    150
2   forest     100
3   housing    250

Los polígonos con el mismo valor de “id” tienen la misma geometría. También hay campos “use_type” y “area”: el primero es el nombre del tipo de uso de suelo dentro de los límites del polígono, el segundo es el área de este tipo de uso de suelo dentro de los límites del polígono. Por lo tanto, cada geometría duplicada contiene información sobre un solo tipo de uso de suelo, pero quiero eliminar duplicados y tener esta información sobre los tipos de uso de suelo en columnas, cada una representando información sobre el área de un tipo de uso de suelo específico, no distintos polígonos. Así:

id  housing_area   farming_area   forest_area
1   100            200            NULL
2   NULL           150            100
3   250            NULL           NULL

¿Cómo puedo hacer esto?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar la función pivot_wider() del paquete tidyr para lograr esto. Aquí está el código para hacerlo:

    library(tidyr)
    
    new_sf <- sf_object %>%
      group_by(id) %>%
      pivot_wider(names_from = use_type, values_from = area)
    

    Este código agrupa el sf_object por id y pivota la tabla de forma más amplia utilizando la columna use_type como origen de los nombres de las columnas y la columna area como origen de los valores. Esto produce un nuevo objeto sf con la estructura deseada. Los valores faltantes se reemplazan por NULL como se muestra en la salida deseada.

Comments are closed.