Extraer data.frame del objeto de características simples en R

29

¿Existe una forma sf-native (es decir, "correcta") de extraer todo excepto la columna de geometría de un objeto de características simples? Esto funciona

df <- dplyr::select(as.data.frame(sf), -geometry)

pero el paso select( , -geometry) se siente innecesario. Además, no elimina los atributos de geometría.

    
pregunta eivindhammers 18.01.2017 - 11:36

3 respuestas

26

Establezca la propiedad st_geometry en NULL .

library(sf)
nc <-  st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
class(nc)
## [1] "sf"         "data.frame"
st_geometry(nc) <- NULL
class(nc)
## [1] "data.frame"

También (aunque esto no eliminará el attr(nc, "sf_column" ):

nc <-  st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
as.data.frame(nc)
    
respondido por el mdsumner 18.01.2017 - 13:36
18

Este es un enfoque pipeable para transformar un objeto sf en un marco de datos simple sin geometría. Use la función st_set_geometry() :

library(sf)
nc <-  st_read(system.file("shape/nc.shp", package="sf"), quiet = TRUE)
class(nc)
#> [1] "sf"         "data.frame"

nc_df <- nc %>% st_set_geometry(NULL)
class(nc_df)
#> [1] "data.frame"
    
respondido por el mfherman 05.12.2017 - 15:54
-5
df <- df[,-geometry_column]

O simplemente df[,-geometry_column] si no desea crear un nuevo objeto

Donde:

df - tu objeto

geometry_column - columna donde se almacena la geometría

    
respondido por el ami 18.01.2017 - 12:25

Lea otras preguntas en las etiquetas