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 :

Création double boucle : boucles imbriquées


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 39
    Points
    39
    Par défaut Création double boucle : boucles imbriquées
    Bonjour le forum,

    j'ai un fichier avec : -la variable mois qui me donne le numéro des mois de 1 à 12
    -la variable année qui me donne l'année de 1999 à 2013.

    Je souhaiterai créer une variable période qui change tous les mois (et qui augmente de 1 à chaque changement de mois).

    par exemple :pour 01JAN2012, la période vaut 1
    pour 31DEC2013, la période vaut 24.

    Je pense à une double boucle mais je ne trouve pas la solution...

    merci de votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bjr,

    Encore toi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    /* si dans ta liste , tous les données sont présents , je trie et je crée un compteur */
    proc sort data = test ; by annee mois ; run ; 
    data test ; set test ; periode = _n_ ; run ; 
     
    /* si t'as des trous de données */
    data test ; set test ; diff = intck ("month", dateréférence, datecalculée); run ; 
    /* en gros , il calcule la différence entre deux dates mais en mois , soit en période si la date de référence est le 
    01/jan/2012 dans ton exemple */
    Cdt
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Bonjour,

    Si j'ai bien compris la question, tu veux un truc du genre :

    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
    data test;
    format date date9.;
    input date date9.;
    annee=year(date);
    mois=month(date);
    cards;
    01jan1999
    05jan1999
    31jan1999
    05feb1999
    20feb1999
    10mar2000
    ;
    run;
     
    data test2;
    set test;
    by annee mois;
    if first.mois then periode+1;
    run;

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Il y a un problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc sort DATA = test ; BY annee mois ; run ; 
    DATA test ; SET test ; periode = _n_ ; run ; 
    DATA test ; SET test ; diff = intck ("month", dateréférence, datecalculée); run ;
    Avec ce code j'ai bien une variable periode mais qui évolue de 1 à chaque changement de jour, sauf que pour mon problème, ça doit changer tout les mois. (oui dans mon tableau j'ai une variable qui s'appelle jour et qui indique tout les jours).

    Je voudrai le tableau en pièce jointe (sachant que quand je serai en janvier 2000 le mois reviens à "1" sinon je n'aurai pas de soucis)

    Autre chose :
    Ma première période débute à 320 et non pas à 1.
    Images attachées Images attachées  

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur Pilotage
    Inscrit en
    Avril 2009
    Messages
    405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur Pilotage
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 405
    Points : 1 063
    Points
    1 063
    Par défaut
    Bjr,

    donc c'est plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    proc sort DATA = test ; BY annee mois ; run ; 
    DATA test ; SET test ; periode = 320 + intck ("month", dateréférence, datecalculée); run ;
    Cdt
    I always thought that the person who specialized in using just SAS PROCS should
    be known as the SAS Proctologist.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2012
    Messages : 40
    Points : 39
    Points
    39
    Par défaut
    Oui ce code-ci fonctionne parfaitement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATA test2;
    SET test1;
    periode = 229 + intck ("month", '01JAN99'd, jour);
    avec 'jour' étant ma variable à comparer avec le 1 janvier 1999

    Merci beaucoup

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

Discussions similaires

  1. Création dynamique et boucle for en vba Access 2000
    Par billy123 dans le forum Access
    Réponses: 4
    Dernier message: 22/02/2007, 11h29
  2. 2 boucles for imbriquées
    Par karimphp dans le forum Langage
    Réponses: 8
    Dernier message: 02/12/2006, 14h46
  3. Batch - Deux boucle For imbriquées plus un FC
    Par Lorponos dans le forum Windows
    Réponses: 17
    Dernier message: 27/07/2006, 14h58
  4. [Tableaux] Boucle while imbriquer
    Par Le-Cortex dans le forum Langage
    Réponses: 11
    Dernier message: 09/09/2005, 14h22
  5. [Syntaxe] Boucle For imbriquées en 1.5
    Par Piolet dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2005, 00h49

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