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 :

Imputer des observations vides avec la dernière valeur observée [DATA]


Sujet :

SAS Base

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut Imputer des observations vides avec la dernière valeur observée
    Bonsoir,

    Le titre de mon sujet n'est peut-être pas très clair, alors je vais essayer d'être plus précis ici. Je réfléchis depuis plusieurs heures pour trouver un moyen de remplacer des lignes vides mais les valeurs observées aux lignes du dessus, mais sans succès.

    Je connais la fonction LAG, mais elle ne fonctionne pas ici car il faut trier la table au préalable et je ne peux pas le faire. Voici un exemple concret :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    data __test;
    input v1 $5. v2;
    cards;
    Step1 5
          5
          5
          5
    Step2 5
          5
          5
    ; 
    run;
    En gros j'ai besoin qu'il y ait écrit Step1 sur toutes les lignes au dessus de step2 et qu'il y ait écrit Step2 pour toutes les autres lignes. Le lag ne fonctionne pas car j'ai déjà plus de deux modalités pour un observation (Step1) et de plus je ne peux pas me servir non plus de FIRST.v1 apparemment car il faudrait trier avant visiblement pour que ça marche.

    Pour contextualiser mon problème, je cherche à simplifier et automatiser un programme type servant à faire des tableaux de résultat pour PROC LOGISTIC. L'ODS donne les effectifs avec SIMPLE (ods output classfreq) sauf que les résultats sont présentés comme au dessus avec uniquement. Je cherche à faire les sommes par variables (par Step dans mon exemple) pour ensuite pouvoir calculer des pourcentages.

    Avez vous une piste pour que je puisse m'en sortir ?

    Merci beaucoup,

    alers

  2. #2
    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,

    Avec un retain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    data __test2 (rename=(v3=v1) drop=v1);
    set __test;
    retain v3;
    if v1 ne "" then v3=v1;
    run;
    Bon courage.

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Bonjour et merci beaucoup pour l'astuce. J'avais essayé avec un RETAIN, mais pas de la même manière et évidemment ça n'avait pas fonctionné.

    Merci encore !

    alers

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 25/02/2014, 18h56
  2. Le problème des champs vides avec le champ total
    Par medreg dans le forum Bases de données
    Réponses: 3
    Dernier message: 05/11/2010, 19h39
  3. Réponses: 8
    Dernier message: 22/12/2009, 16h20
  4. remplir des champs vides avec tjavaRow1
    Par bacomina dans le forum Développement de jobs
    Réponses: 6
    Dernier message: 24/08/2009, 13h46
  5. Réponses: 2
    Dernier message: 31/01/2007, 09h49

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