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

Débutez Discussion :

Variable sortie vaut 1 si l'une des variables d'entrée vaut 1


Sujet :

Débutez

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut Variable sortie vaut 1 si l'une des variables d'entrée vaut 1
    salut,
    mes données sont comme ça
    a b c d e
    8 0 0 0 0
    5 0 1 1 0

    je souhaite créer une var S qui prend 1 si l'une des var (b,c,d ou e ) prend 1...

  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
    As tu cherche? Quelle approche proposes tu? Si tu es bloque, quel est techniquement ton probleme?

  3. #3
    Membre actif
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if b=1 or c=1 or d=1 or e=1 or ... then relap=1;
    bah voila mais la liste des variables est longue

  4. #4
    Membre Expert

    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
    Par défaut
    tu peux utiliser un array (tableau)SAS.

  5. #5
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Hello,
    Je ne vois pas comment le faire avec un array.

    je propose l' exemple suivant:

    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 tab;
    input a b c d e;
    cards;
    8 0 0 0 0
    5 0 1 1 0
    0 1 0 0 0
    1 0 2 3 4
    3 2 2 9 6
    0 1 3 5 6
    4 5 6 7 1
    0 2 3 4 5
    ;run;
     
    data tab;
    set tab;
    s=ifn (findc(cats(of a--e),1)>=1,1,0)   ;
    run;
    Pour le nom de tes variables, il faut voir...
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  6. #6
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Hello SAM.
    Si une des variables vaut 12, est-ce que ta solution ne la considère pas comme valant 1 ?
    Avec un ARRAY comme le suggérait Salah, l'algorithme serait :
    1) RELAP initialisé à 0
    2) parcourir l'array en boucle
    3) si un élément de l'array vaut 1, alors RELAP=1

    On peut même abréger les souffrances de la boucle en lui ajoutant une condition d'arrêt si RELAP passe à 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DO i=1 TO DIM(tableau) WHILE(relap=0) ;

  7. #7
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Merci pour la remarque Olivier.
    je rectifie le tir .Alors mon exemple devient:
    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
     
     
    DATA tab;
    input a b c d e;
    cards;
    8 0 0 0 0
    18 0 0 0 0
    8 0 0 0 11
    5 0 1 1 0
    0 1 0 0 0
    1 0 2 3 4
    3 2 2 9 6
    0 1 3 5 6
    4 5 6 7 1
    0 2 3 4 5
    ;run;
     
    DATA tab;
    SET tab;
    relap=ifn (find('|'!!catx('|',of a--e),'|1|')>1,1,0);
    run;
    PS: une solution avec tableaux sera mieux adaptée
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  8. #8
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Par défaut
    Il manque encore à ta solution de concaténer un dernier | à la fin pour le cas où le seul 1 serait le dernier (c'est le cas dans l'observation 9 de ton exemple).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relap=(find('|'!!catx('|',of a--e)!!'|','|1|')>1);
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relap=(findW(catx('|',of a--e),'1','|')>0);

  9. #9
    Membre Expert

    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
    Par défaut
    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
     
    DATA tab;
    input a b c d e;
    cards;
    8 0 0 0 0
    0 0 0 0 0
    5 0 1 1 0
    0 0 0 0 0
    0 1 0 0 0
    1 0 2 3 4
    3 2 2 9 6
    0 1 3 5 6
    4 5 6 7 1
    0 2 3 4 5
    0 0 0 0 0
    ;run;
     
    data tab1;set tab;
    array tableau(*) _numeric_;
    s=0;
    DO i=1 TO DIM(tableau);
    	if tableau[i] eq 1 then s=1;
    end;
    run;

  10. #10
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Citation Envoyé par olivier.decourt Voir le message
    Il manque encore à ta solution de concaténer un dernier | à la fin pour le cas où le seul 1 serait le dernier (c'est le cas dans l'observation 9 de ton exemple).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relap=(find('|'!!catx('|',of a--e)!!'|','|1|')>1);
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    relap=(findW(catx('|',of a--e),'1','|')>0);
    .
    Cette fois , c'est une erreur de copier collé.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  11. #11
    Membre Expert

    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
    Par défaut
    c'est plus court avec le find

  12. #12
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Citation Envoyé par bahraoui Voir le message
    c'est plus court avec le find
    C'est plus court mais je vote quand même pour ta solution
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  13. #13
    Membre Expert

    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
    Par défaut

    Pourquoi la mienne, l'autre est plus élégante?

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 01/04/2013, 10h48
  2. Réponses: 0
    Dernier message: 18/06/2012, 16h33
  3. Un flux avec plusieurs fichier Excel dépendant d'une des variables du flux
    Par dev_ggy dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 24/01/2012, 17h16
  4. Créer une/des variable(s) dynamique(s)
    Par jojo86 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/04/2008, 14h55
  5. Définition des variable dans un fichier.m d'une interface graphique
    Par developpeur82 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 10/05/2007, 14h53

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