Bonjour,
J’utilise R 2.15.0.
J’aimerais construire un SpatialPolygonsDataframe à partir de deux objets, un spatialpolygonedataframe et un dataframe (cf NB ci-dessous), sur base d’une colonne commune IDbloc pour combiner les fichiers. Sachant que certains IDbloc de l’objet spatial ne se retrouvent pas dans le dataframe (donc pas le même nombre de lignes), et que l’ordre des IDbloc n’est pas le même dans les deux objets (les lignes correspondant aux IDblocs ne sont pas dans le même ordre dans les deux objets, donc je ne peux pas les matcher sur base de "row names").
J’ai essayé de combiner les deux objets avec :
LIBE_RatDam.spdf<-SpatialPolygonsDataFrame(LIBE_blockID.spdf, LIBE_RatDam.df , match.ID= LIBE_RatDam.df$IDbloc)
Mais cela ne fonctionne pas car je n’ai pas le même nb de lignes (Erreur : length(Sr@polygons) == nrow(data) is not TRUE), et en plus pas dans le même ordre.
Comment faire ?
Des recherches m’ont laissée penser qu’il faudrait que j’utilise des fonctions comme match, spCbind et/ou spChFIDs, en enlevant dans l’objet spdf les lignes correspondant aux IDbloc qui ne se retrouvent pas dans l’objet df, et ensuite réorganisant les lignes dans l’objet df pour avoir le même ordre que dans l’objet spdf, mais je ne m’en sors pas, je n’arrive pas à produire un script qui fonctionne (je suis débutante avec R…).
Et je me dis en plus qu’il y a peut-être un moyen plus rapide/élégant.
Mille merci d’avance si quelqu’un peut m’aider...
NB :
- objet de classs SpatialPolygonsDataframe (nommé « LIBE_blockID.spdf ») qui matérialise sous forme de polygones les différentes blocs (=parcelles) d’une plantation/zone, avec pour @data une seule colonne « IDbloc » (le contenu de la colonne IDbloc correspond en fait à la valeur du numéro de la ligne). (Nb : cet objet est issu d’une couche .shp de QGIS)
- objet de class dataframe (nommé « LIBE2011a_RatDam.df »), avec une colonne « IDbloc » et plusieurs autres colonnes correspondant à des observations (observations mensuelles dans ces blocs pour le mois a de l’année 2011). Je n’ai pas forcément des observations pour tous les blocs recensés dans mon objet LIBE_blockID.spdf (sur base IDbloc : 1 ligne de « LIBE_blockID.spdf » pour 0 à 1 ligne dans « LIBE2011a_RatDam.df »). L’ordre des lignes selon la variable IDbloc est différent de l’objet précédent (et ne correspond pas au numéro des lignes).
Partager