IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

R Discussion :

comment ajouter des colonnes à un SpatialLinesDataFrame ?


Sujet :

R

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Par défaut comment ajouter des colonnes à un SpatialLinesDataFrame ?
    Bonjour,

    Mon script génère un fichier SpatialLinesDataFrame que j'exporte en shp pour l'utiliser sous un logiciel de carto nommé Qgis.
    Avant cet export, je voudrai ajouter des colonnes (EPCi et SCOT) à "la partie DataFrame" du "SpatialLinesDataFrame" à partir d'une jointure (sur coma) avec un Dataframe distinct.

    Avez-vous une idée de la commande à utiliser? :

    ps: ci-dessous la structure de mes deux fichiers:

    la structure du SpatialLinesDataFrame:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Formal class 'SpatialLinesDataFrame' [package "sp"] with 4 slots
      ..@ data       :'data.frame':	706 obs. of  8 variables:
      .. ..$ coma         : Factor w/ 36554 levels "01001","01002",..: 45 237 1611 1611 1644 1651 1682 1685 1716 1724 ...
      .. ..$ xa           : num [1:706] 857394 856606 959030 959030 924476 ...
      .. ..$ ya           : num [1:706] 6529239 6534407 6337689 6337689 6307982 ...
      .. ..$ comb         : Factor w/ 36554 levels "01001","01002",..: 33991 33959 33959 33991 33995 33995 34030 33991 33959 33995 ...
      .. ..$ xb           : num [1:706] 980706 979263 979263 980706 989466 ...
      .. ..$ yb           : num [1:706] 6288088 6276870 6276870 6288088 6269837 ...
      .. ..$ entrant_net$n: num [1:706] 3.93 5.02 12.32 0.98 4 ...
      .. ..$ rows         : chr [1:706] "561" "14941" "11639" "11639.1" ...
      ..@ lines      :List of 706
      .. ..$ :Formal class 'Lines' [package "sp"] with 2 slots
      .. .. .. ..@ Lines:List of 1
      .. .. .. .. ..$ :Formal class 'Line' [package "sp"] with 1 slot
    ...
    la structure du dataframe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'data.frame':	706 obs. of  9 variables:
     $ coma             : chr  "01049" "01262" "04070" "04070" ...
     $ liba             : chr  "La Boisse" "Montluel" "Digne-les-Bains" "Digne-les-Bains" ...
     $ comb             : chr  "83082" "83050" "83050" "83082" ...
     $ libb             : chr  "Montferrat" "Draguignan" "Draguignan" "Montferrat" ...
     $ n                : num  3.93 5.02 12.32 0.98 4 ...
     $ Nom_com          : chr  NA NA NA NA ...
     $ libSCOT          : chr  NA NA NA NA ...
     $ libEPCI          : chr  NA NA NA NA ...
     $ PTU_2014_VAR_2015: chr  NA NA NA NA ...
    ....
    Merci
    fcka

  2. #2
    Membre Expert
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Par défaut Comment ajouter des colonnes à un SpatialLinesDataFrame
    Bonjour,

    Vous pouvez merger les deux dataframe comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sldf@data <- merge(sldf@data, df, by="coma")
    # sldf : SpatialLinesDataFrame
    # df : DataFrame
    A partir de l'exemple de la vignette du package sp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    library(sp)
    l1 = cbind(c(1,2,3),c(3,2,2))
    l1a = cbind(l1[,1]+.05,l1[,2]+.05)
    l2 = cbind(c(1,2,3),c(1,1.5,1))
    Sl1 = Line(l1)
    Sl1a = Line(l1a)
    Sl2 = Line(l2)
    S1 = Lines(list(Sl1, Sl1a), ID="a")
    S2 = Lines(list(Sl2), ID="b")
    Sl = SpatialLines(list(S1,S2))
    df = data.frame(z = c(1,2), row.names=sapply(slot(Sl, "lines"), function(x) slot(x, "ID")))
    Sldf = SpatialLinesDataFrame(Sl, data = df)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    > str(Sldf)
    Formal class 'SpatialLinesDataFrame' [package "sp"] with 4 slots
      ..@ data       :'data.frame': 2 obs. of  1 variable:
      .. ..$ z: num [1:2] 1 2
      ..@ lines      :List of 2
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    df2 = data.frame(z = c(1,2), a = c(3,4), b = c(5,6))
    Sldf@data = merge(Sldf@data, df2, by="z")
    > str(Sldf)
    Formal class 'SpatialLinesDataFrame' [package "sp"] with 4 slots
      ..@ data       :'data.frame': 2 obs. of  3 variables:
      .. ..$ z: num [1:2] 1 2
      .. ..$ a: num [1:2] 3 4
      .. ..$ b: num [1:2] 5 6
      ..@ lines      :List of 2
    ...
    Cordialement,

  3. #3
    Membre confirmé
    Homme Profil pro
    chargé d'études
    Inscrit en
    Janvier 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : chargé d'études

    Informations forums :
    Inscription : Janvier 2015
    Messages : 93
    Par défaut comment ajouter des colonnes à un SpatialLinesDataFrame ?
    merci cela fonctionne parfaitement !

    ps.: dans mon cas, les variables ne portant pas le même nom, j'ai légèrement adapté le code avec l'aide sur la fonction "merge". Cela donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    flux_sh@data = merge(flux_sh@data, code_epci, by.x = "coma", by.y = "Insee", all.x = T)


    fcka

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 16
    Dernier message: 14/07/2009, 18h47
  2. Réponses: 3
    Dernier message: 18/12/2008, 15h46
  3. [ADO.Net][VB.NET] Comment ajouter une colonne Integer à un DataTable ?
    Par graphicsxp dans le forum Accès aux données
    Réponses: 2
    Dernier message: 20/04/2005, 12h08
  4. [EXPORT] Comment ajouter des packages au .jar ?
    Par djskyz dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 12/08/2004, 23h23
  5. [debutant] Comment ajouter des .class ?
    Par Slein dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 30/04/2004, 14h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo