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

SAS Base Discussion :

PROC SQL sommer des couples de variables


Sujet :

SAS Base

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut PROC SQL sommer des couples de variables
    Bonjour à tous,

    J'étudie les déplacements entre villes. J'ai une table constituée de 3 colonnes : commune de départ ; commune d'arrivée, nombre de personne.

    Ce que me fournit le tableau c'est donc :
    - les flux (nombre de personne) de la commune 'A' vers les commune 'B', 'C', 'D'....
    - les flux (nombre de personne) de la commune 'B' vers les commune 'A', 'C', 'D'....
    - etc...

    Ce que j'aimerai savoir c'est la somme : des personnes qui vont de 'A' vers 'B' + des personnes qui vont de 'B' vers 'A'.

    Merci à tous.

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3 064
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 064
    Points : 4 605
    Points
    4 605
    Par défaut
    Hello

    Je serais d'avis de faire un tableau de contingence à double entrées. Si le couple entre deux lettre existe tu mets un clef qui correspond aux deux villes. Tu fais ensuite ta sommation par rapport à la clef.

    Après cela dépend du nombre de ville. Si tu as 50 colonnes d'accord , si tu as 50 000 colonnes non SAS est limité à 1000 colonnes (de mémoire) .

    En somme tu cherches à projeter tous les cas.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    J'ai 770 villes.
    J'avais pensé à quelque chose comme ça :

    Départ Arrivée Flux
    A B 15
    A C 12
    A D 4
    B A 23
    B C 8
    ... etc


    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
    16
    17
    18
    19
    20
    21
    22
    DATA flux_au;
    INPUT depart $ arrivee $ flux;
    CARDS;
    A B 15
    A C 12
    A D 4
    B A 23
    B C 8
    B D 3
    C A 21
    C B 16
    ;
    RUN;
     
    data flux_au2(rename= (flux=flux2 depart=depart2 arrivee=arrivee2)) ; set flux_au; run;
     
    proc sql;
    create table flux_au3 as
    select a.*, b.*
    from flux_au as a, flux_au2 as b where a.depart=b.arrivee2 and a.arrivee=b.depart2; quit;
     
    data flux_au3; set flux_au3; fluxtot=flux+flux2; run;
    Le problème c'est qu'il faut absolument dans ce cas que Si A -> B existe alors B-> A aussi (mm si c'est 0) car les 'D' sont exclus de ma table finale. Alors que dans ma table je n'ai pas toujours les deux cas de figure.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    C'est une solution sans SQL :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    data flux ;
    INPUT Depart $ Arrivee $ flux;
    CARDS;
    A B 15
    A C 12
    A D 4
    B A 23
    B C 8
    B D 3
    C A 21
    C B 16
    ;
    RUN;
     
    %let Communes=('A', 'B') ;	
    data somme_flux (keep=Dep_Arr somme) ;
     set flux  end=Fin ; 
     retain Dep_Arr ;
     if Depart   in &Communes then choix1=1 ; 
     if Arrivee  in &Communes then choix2=1 ; 
     if choix1 and choix2  then do ; 
        somme+flux ; 
        Dep_Arr=cats(Depart , '==> ', Arrivee, ' + ', Arrivee, '==> ', Depart) ;
    	                    end ;
     if fin then output ;
    run ;
    Cordialement
    Ward

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2014
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Cela fonctionne.
    Merci pour votre aide
    Cordialement.
    Peacer

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/02/2014, 16h40
  2. [SQL] Proc SQL sur des variables dont le nom contient des espaces
    Par Oreo_ dans le forum SAS Base
    Réponses: 3
    Dernier message: 23/05/2013, 16h20
  3. [SQL] Récupération éventuelle d'une variable pour faire des tests
    Par mougeole dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/05/2006, 13h56
  4. [MySQL] Introduire une variable dans requête SQL, insérer des données à la volée
    Par Ronan.f dans le forum PHP & Base de données
    Réponses: 18
    Dernier message: 29/04/2006, 22h10
  5. [SQL] Récupérer des variables de formulaire dans une requête SQL
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 22/11/2005, 18h44

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