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 d'une table


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Par défaut création d'une table
    Bonjour à tous, je suis débutant en SAS, j'ai un probleme de création de table, voici la table initiale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DATA test ;
    input  id  x ;
    cards;
    1  10
    2  11
    3  12
    4  13
    ;
    run;
    mai je voudrais créer une autre table pour calculer les données de cette table,
    qui comporte 3 variables, donc:
    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
    DATA test1;
    set test;
             IF _N_ = 1  then 
          call symput("a", x);   
    	     IF _N_ = 2  then 
          call symput("b", x); 
    	 	 IF _N_ = 3  then 
          call symput("c", x); 
    	  	 IF _N_ = 4  then 
          call symput("d", x); 
          AA=&a+&b;
          AB=&c+&d;
          ensemble=&a+&b+&c+&d;
    keep AA AB ensemble;
    run;
    Ce programme permet de créer une table avec 3 variables, mais il me donne aussi 4 lignes qui ont même données(4 fois 21,25,46, j'ai besion qu'une seul ligne). En plus, il a l'air trop compliqué, sur tout en cas de beaucoup de données et variables, quelqu'un peut me donner un coup de main, un programme plus efficace et simple?
    je suis un étranger, et mal exprimé, je vous prie de m'excuser si vous avez mal compris.

  2. #2
    Membre Expert
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Par défaut
    tu veux dire quoi par calculer les données?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Par défaut
    Citation Envoyé par Manoutz Voir le message
    tu veux dire quoi par calculer les données?
    je voulais tout simplement créer une nouvelle table qui comporte 3 variables, la somme de 10 et 11; 12 et 13; et total.
    je ne sais pas comment définit exactement la cellule de table.
    le probleme est tout bête, mais je n'y arrive pas.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Par défaut
    OK, j'ai trouvé un opérateur (OBS=1) pour que la table soit une ligne, mais le programme est toujours minutieuse si les données sont nombreuses.

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 41
    Par défaut
    si j'ai bien compris, tu peux essayer avec ceci :
    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
     
    DATA test ;
    input  id  x ;
    cards;
    1  10
    2  11
    3  12
    4  13
    5  14
    6  15
    7  16
    8  17
    9  18
    10 19
    11 20
    12 21
    ;
    proc sort;by id;run;
     
    %LET DSID=%SYSFUNC(OPEN(work.test,I));
    %LET NOBS=%SYSFUNC(PUTN(%SYSFUNC(ATTRN(&DSID,NOBS)),10.));
    %PUT Nombre de records : &NOBS;
     
    data test2;
     set test;
     retain somme1 somme2 cpt;
     cpt=sum(cpt,1);
     if cpt in (1,2) then somme1 = sum(somme1,x);
                     else
     if cpt in (3,4) then somme2 = sum(somme2,x);
                     else do;cpt=1;somme1 = sum(somme1,x);end;
     total = sum(somme1,somme2);
     if _n_=&NOBS;
    drop cpt x id;
    run;

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Par défaut
    meirci richie_leffe, je l'ai testé, ça marche!

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

Discussions similaires

  1. création d'une table dans une base de donnée accèss
    Par zidenne dans le forum Bases de données
    Réponses: 1
    Dernier message: 25/10/2005, 10h54
  2. Question sur la création d'une table
    Par air dans le forum Oracle
    Réponses: 4
    Dernier message: 23/10/2005, 12h46
  3. Réponses: 4
    Dernier message: 19/10/2005, 11h26
  4. Création d'une table avec foreign key
    Par lepierre dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/09/2004, 14h20
  5. INTERBASE Création d'une table
    Par Corben dans le forum InterBase
    Réponses: 2
    Dernier message: 19/06/2004, 20h55

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