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 :

Concaténer deux variables


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2007
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 49
    Points : 38
    Points
    38
    Par défaut Concaténer deux variables
    Bonjour à tous!

    J'ai un problème de concaténation...
    En effet, dans ma base j'ai entre autres deux variables "annee" et "mois", annee allant de 2000 à 2008 et mois de 1 à 12..
    je voudrais créer une variable me donnant ^par exemple:

    annne mois date
    2000 1 2000-1
    2000 2 2000-2

    voici le code que j'utilise mais ne fonctionne pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    data test.modelisation2; set test.modelisation;
    date = annee ||"-"|| mois; run;

  2. #2
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Pour la manipulation de chaines de caractères, SAS met des blancs avant, il faut utiliser les fonctions trim et left :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date = trim(left(annee)) ||"-"|| trim(left(mois));

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Etape suivante
    Bonjour,
    je suis également confronté au même problème avec base de données sous SAS.
    Je dispose d'une table avec les variables:
    - MOIS avec comme valeur le numéro du mois (01, 02, 03, ...., 12);
    - AN avec comme valeur le numéro de l'année (2000,2001, 2002,....);

    A partir de ces deux variables, je souhaite créer une variable de DATE du style ==> MoisAnnée

    Le jour n'ayant aucune importance je le mets par défaut à '1'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Option DFLANG="french";
    data Bouh; set mens.de970701 mens.de970801;
    datetr = '01'||"/"||trim(LEFT(MOIS))||"/"||trim(LEFT(AN));
    run;
    proc freq data= Bouh;
    tables motins*datetr/nopercent nocol norow;
    format datetr MMYYS7.;
    run;

    Il me fournit l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: You are trying to use the numeric format MMYYS with the character variable datetr.
    Est ce que vous avez une solution?

    Merci de votre attention

  4. #4
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Tu peux utiliser la fonction mdy qui prend en paramètre 3 variables : mois, jour, annee. Ce qui te permettra de créer une date sas au lieu de faire une concaténation.
    IL me semble que ton problème est au niveau de la proc freq, format datetr MMYYS7.;
    Dans la table datetr est de type chaine de caractère.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data t; set  mens.de970701 mens.de970801;
    format ma_date date9.;
    ma_date=mdy(MOIS,1,AN);
    run;

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Points : 254
    Points
    254
    Par défaut
    Il faut pas confondre les variables numériques et les variables alpha.
    Pour les dates, par exemple, tu peux créer une variable alphanumérique qui contient les chaines de genre "01/02/2003". Mais tu peux également créer une variable numérique, y mettre le nombre des jours à partir du 01/01/1960 (15737 pour mon exemple de 01/02/2003) et attribuer le format ddmmyy10.

    Dans les deux cas, ta variable va afficher la même chose : "01/02/2003". Mais la première variable sera alphanumérique, donc pas de vérification de la validité de la date (tu pourrais y mettre "toto" sans problèmes), pas d'opérations sur les dates (essaie d'ajouter 27 mois), pas de changement du format, etc. Et la variable numérique, elle est un peu plus compliqué à créer (voir la réponse de bahraoui) par exemple, mais plus simple à traiter.

    Pour revenir à ton code : avec la concaténation des chaines de caractères tu créer une variable alphanumérique, à laquelle tu applique ensuite le format numérique. Soit l'un soit l'autre, il faut choisir.

Discussions similaires

  1. Concaténer deux variables
    Par bibi666 dans le forum Débuter
    Réponses: 2
    Dernier message: 14/07/2009, 13h48
  2. [PHP 5.0] Concaténer deux variables
    Par cyrilherve dans le forum Langage
    Réponses: 6
    Dernier message: 30/03/2009, 14h20
  3. concaténer deux variables de type entière
    Par beegees dans le forum C
    Réponses: 22
    Dernier message: 02/11/2007, 12h52
  4. Concaténer deux variables dans une boucle
    Par jeremie74 dans le forum Flash
    Réponses: 2
    Dernier message: 22/05/2007, 19h51
  5. Concaténer deux variables ?
    Par glsn dans le forum ASP
    Réponses: 2
    Dernier message: 19/12/2003, 13h53

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