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 :

Ajuster des dates sous SAS


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 27
    Points
    27
    Par défaut Ajuster des dates sous SAS
    Bonjour,

    J'ai besoin de votre aide pour un "ajustement" de date sous SAS.

    J'ai une base faite ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    data aa;
    input num_ctr$  cd_version$ date_deb$ date_fin$ code_C annee$;
    cards;
    04378  001  05FEB2014 31DEC2014  1  2014
    04378  001 01Janv2015 31DEC2015 1   2015
    04378  002 23JUL2015   31DEC2015 -1 2015
    ;
    run;
    J'aimerais transformer cette base ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    data bb;
    input num_ctr$  cd_version$ date_deb$ date_fin$ code_C annee$;
    cards;
    04378  001  05FEB2014 31DEC2014  1  2014
    04378  001 01Janv2015 23JUL2015  1   2015
    ;
    run;
    Donc qd la variable code_C vaut -1, il me garde Cd_version de code_C=1 donc ici 001 et surtout remplacer date_fin 31DEC2015 sur l'année 2015 par date_deb quand code_C=-1 donc dans l'exemple 23JUL2015.

    Un grand merci

  2. #2
    Membre du Club
    Femme Profil pro
    Formatrice en SAS (en ligne)
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Formatrice en SAS (en ligne)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 46
    Points
    46
    Par défaut
    Ton étape data légèrement mise à jour (ce n'est pas une obligation)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data aa;
    input num_ctr$  cd_version$ date_deb date_fin code_C annee$;
    informat date_deb date_fin date9.;
    format date_deb date_fin date9.;
    cards;
    04378  001 05FEB2014 31DEC2014  1 2014
    04378  001 01JAN2015 31DEC2015  1 2015
    04378  002 23JUL2015 31DEC2015 -1 2015
    ;
    run;
    Je viens de faire quelques lag sur les données triées en ordre décroissant.
    Tu as alors toutes les infos pour finaliser.

    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 test;
        set aa;
        _n=_n_;
    run;
     
    proc sort data=test;
        by descending _n;
    run;
     
    data test;
        set test;
        _date_deb=lag(date_deb);
        _code_c  =lag(code_c);
        format _date_deb date9.;
    run;
     
    proc sort data=test;
        by _n;
    run;
     
    proc print data=test noobs;
    run;

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 27
    Points
    27
    Par défaut
    Bonjour et merci pour votre réponse:

    En modifiant la base ( car ma base source contient plusieurs ligne pour un mm contrat) avec l'introduction de la variable GT:

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    data aa;
    input num_ctr$ gt$  cd_version$ date_deb date_fin code_C annee$;
    informat date_deb date_fin date9.;
    format date_deb date_fin date9.;
    cards;
    04378 G1  001 05FEB2014 31DEC2014  1 2014
    04378 G2  001 05FEB2014 31DEC2014  1 2014
    04378 G3  001 05FEB2014 31DEC2014  1 2014
    04378 G4  001 05FEB2014 31DEC2014  1 2014
    04378 G5  001 05FEB2014 31DEC2014  1 2014
    04378 G1 001 01JAN2015 31DEC2015  1 2015
    04378 G2 001 01JAN2015 31DEC2015  1 2015
    04378 G3 001 01JAN2015 31DEC2015  1 2015
    04378 G4 001 01JAN2015 31DEC2015  1 2015
    04378 G5 001 01JAN2015 31DEC2015  1 2015
    04378 G1 002 23JUL2015 31DEC2015 -1 2015
    04378 G2 002 23JUL2015 31DEC2015 -1 2015
    04378 G3 002 23JUL2015 31DEC2015 -1 2015
    04378 G4 002 23JUL2015 31DEC2015 -1 2015
    04378 G5 002 23JUL2015 31DEC2015 -1 2015
    ;
    run;
     
    data test;
        set aa;
        _n=_n_;
    run;
     
    proc sort data=test;
        by descending _n;
    run;
     
    data test;
        set test;
        _date_deb=lag(date_deb);
        _code_c  =lag(code_c);
        format _date_deb date9.;
    run;
     
    proc sort data=test;
        by _n;
    run;
    Cela ne semble plus marcher. En effet sur la base test, par exemple sur la dernière ligne de l'année 2014, la variable _date_deb = 1JANV2015 alors que çà devrait être 05FEV2014 ....comment pourrai-je modifier le programme?

    Pour bien visualiser ce que je veux voici la base finale doit ressembler exactement à :

    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
     
    data BB;
    input num_ctr$ gt$  cd_version$ date_deb date_fin code_C annee$;
    informat date_deb date_fin date9.;
    format date_deb date_fin date9.;
    cards;
    04378 G1  001 05FEB2014 31DEC2014  1 2014
    04378 G2  001 05FEB2014 31DEC2014  1 2014
    04378 G3  001 05FEB2014 31DEC2014  1 2014
    04378 G4  001 05FEB2014 31DEC2014  1 2014
    04378 G5  001 05FEB2014 31DEC2014  1 2014
    04378 G1 001 01JAN2015 23JUL2015  1 2015
    04378 G2 001 01JAN2015 23JUL2015  1 2015
    04378 G3 001 01JAN2015 23JUL2015  1 2015
    04378 G4 001 01JAN2015 23JUL2015  1 2015
    04378 G5 001 01JAN2015 23JUL2015  1 2015
    ;
    run;

    Merci de m'aider...

  4. #4
    Membre du Club
    Femme Profil pro
    Formatrice en SAS (en ligne)
    Inscrit en
    Mai 2019
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Formatrice en SAS (en ligne)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2019
    Messages : 28
    Points : 46
    Points
    46
    Par défaut
    Modifiez votre tri avant l'étape data utilisant le lag.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    proc sort data=test;
        by num_ctr gt descending cd_version descending _n;
    run;

Discussions similaires

  1. requete date sous sas
    Par ghatfan99 dans le forum SAS Base
    Réponses: 3
    Dernier message: 30/04/2009, 14h18
  2. Réponses: 4
    Dernier message: 02/02/2009, 09h45
  3. Problème de date sous sas
    Par feragne dans le forum SAS Base
    Réponses: 8
    Dernier message: 05/09/2008, 14h00
  4. Gestion des dates sous Access
    Par joquetino dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 20/07/2008, 23h23
  5. Mise A Jour Avec Des Dates Sous Access
    Par jo001 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/05/2007, 15h55

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