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 :

Calcul d'une somme avec données manquantes


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Calcul d'une somme avec données manquantes
    Bonsoir, je dois calculer la somme (en colonne) des importations pour chaque pays étudié d'une table comportant des données manquantes. Les variables sont les pays(en lignes) et le temps en colonnes.
    La table est composée de 33 lignes et 133 colonnes. Je vous donne l'aperçu de la table:

    Pays T1 T2 T3 ... TN
    Allemagne 100 120 150 200
    Australie . . 120 200
    Espagne . 105 200 180

    Les "points" indiquent que les données sont manquantes.

    Je n'arrive pas à programmer le fait qu'on ait des données manquantes en utilisant la proc sql. De plus, je n'arrive pas à avoir les résultats en colonnes.

    Quelqu'un aurait-il une idée?

    Merci

  2. #2
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Avril 2014
    Messages : 15
    Points : 13
    Points
    13
    Par défaut
    Bonjour,

    Je te donne ci-joint un code qui devrait t'aider.

    La fonction LAG est juste utile au cas où tu as plusieurs fois le même pays qui apparait dans tes données.
    La fonction MISSING permet de faire les sommes et excluant les valeurs manquantes.
    Et enfin, la proc transpose de permet d'avoir tes totaux en colonne mais des renames sont à prévoir pour tes variables.

    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
     
    data tbl1;
    infile cards;
    input Pays $ T1 T2 T3;
    cards;
    ESPAGNE 100 120 150
    FRANCE 200 . 50
    ESPAGNE . . 100
    SUISSE . . 400
    ;
    run;
     
    %macro somme();
     
    	proc sort data=tbl1;
    		by PAYS;
    	run;
     
    	data tbl2;
    		set tbl1;
    		if lag(Pays) eq Pays then do;
    			retain TN;
    		end;
    		else do;
    			TN=0;
    		end;
    		%do i=1 %to 3;
    			if NOT MISSING(T&i) then do;
    				TN=sum(TN+T&i.);
    			end;
    		%end;
    	run;
     
    %mend;
     
    %somme();
     
    proc transpose data=tbl2;
    run;
    Bon courage !

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/08/2016, 16h36
  2. Réponses: 4
    Dernier message: 07/07/2016, 16h22
  3. Calcul d'une somme sous condition avec maccro
    Par ARG971 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/10/2013, 14h48
  4. Champ calculé avec données manquantes = #Erreur
    Par bikeur62 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 24/05/2013, 17h06
  5. compléter une liste avec données manquantes
    Par Endive dans le forum Général Python
    Réponses: 2
    Dernier message: 25/05/2010, 20h39

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