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 :

Tableau croisé à partir de valeurs


Sujet :

R

  1. #1
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Tableau croisé à partir de valeurs
    Bonjour,

    Je souhaite faire un tableau croisé me calculant le total de surfaces d'un état A vers un état B. Mon fichier .dbf en entrée (issu d'un shapefile), contient 3 champs : l'état initial, l'état final et la surface. Mes individus sont des polygones (étant donné que ça vient d'un SIG).

    Exemple :

    Etat initial Etat final Surface
    Etat A Etat A 30
    Etat B Etat A 10
    Etat A Etat A 20
    Etat B Etat A 20
    Etat B Etat B 40

    Je souhaite obtenir le tableau suivant :

    initial \ final Etat A Etat B
    Etat A 50 0
    Etat B 30 40

    Le but au final est de faire un graphe de transition d'un état à l'autre, comme on peut le voir sur ce document page 8. Nom : Capture.JPG
Affichages : 669
Taille : 38,6 Ko

    Je précise que je n'ai pas nécessairement le même nombre d'états initiaux et finaux, et donc par conséquent certains états initiaux ne se retrouvent pas en finaux et inversement.

    J'espère avoir été assez clair dans l'expression de mon besoin. Merci de votre aide !

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Tableau croisé à partir de valeurs
    Bonjour,

    Une proposition de code avec la librairie reshape et la fonction cast(). C'est l'équivalent d'un tableau croisé dynamique :

    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
    > toto <- data.frame(initial=c("A","B","A","B","B"),
    +                    final=c("A","A","A","A","B"),
    +                    value=c(30,10,20,20,40))
    > toto
      initial final value
    1       A     A    30
    2       B     A    10
    3       A     A    20
    4       B     A    20
    5       B     B    40
    > library(reshape)
    > cast(toto,initial~final,sum)
      initial  A  B
    1       A 50  0
    2       B 30 40
    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Désolé pour le retard de réponse, j'ai eu d'autres affaires entre temps.
    Merci beaucoup c'est exactement ce que je cherchais

    Zacharie

  4. #4
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    je ré-ouvre la discussion, puisque j'ai un petit problème.

    La fonction cast marche très bien, lorsque ma dernière colonne est celle utilisée pour le value. Est-ce forcément la dernière colonne ou peut-on spécifier le nom de la colonne à utiliser? En effet j'ai rajouté une colonne "annee" à mon data frame, et je voudrais lui spécifier d'utiliser la colonne "surface".

    J'ai donc colonnes dans ;on data frame : initial, final, surface et anneeJ'ai essayé avec le code suivant : cast(toto,initial~final,sum, surface=guess_value(toto))d'après ce que j'avais pu lire dans l'aide de la fonction.
    J'ai un message d'erreur "invalid 'type' (character) of argument" pourtant ma colonne est bien numérique.

    Peut-être pouvez vous m'aider mgdondon,
    Merci beaucoup !

  5. #5
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Tableau croisé à partir de valeurs
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    > toto <- data.frame(initial=c("A","B","A","B","B"),
    +                    final=c("A","A","A","A","B"),
    +                    surface=c(30,10,20,20,40),
    +                    annee=c(1980,1990,1994,1982,1990))
    > toto
      initial final surface annee
    1       A     A      30  1980
    2       B     A      10  1990
    3       A     A      20  1994
    4       B     A      20  1982
    5       B     B      40  1990
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    > library(reshape)
    > cast(toto,initial~final,value="surface",sum)
      initial  A  B
    1       A 50  0
    2       B 30 40
    Cordialement,

  6. #6
    Candidat au Club
    Homme Profil pro
    Géomaticien
    Inscrit en
    Septembre 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Septembre 2016
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Oui, tout simplement, les ""...

    Merci beaucoup, je clos à nouveau le sujet

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

Discussions similaires

  1. tableau croisé dynamique et valeur nulle
    Par afssaLERH dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/11/2008, 14h18
  2. tableau croisé dynamique et valeur nulle
    Par afssaLERH dans le forum Excel
    Réponses: 1
    Dernier message: 03/11/2008, 18h18
  3. tableau croisé à partir de plusieurs classeurs
    Par sambinapas dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/12/2007, 20h20
  4. [CR XI]Tableau croisé dynamique et valeurs = 0
    Par Coocky10 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 05/12/2007, 15h18
  5. Réponses: 8
    Dernier message: 06/08/2007, 11h32

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