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 du Club
    Homme Profil pro
    Inscrit en
    Mars 2011
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 48
    Points
    48
    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 chevronné
    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
    Points : 1 868
    Points
    1 868
    Par défaut
    As tu cherche? Quelle approche proposes tu? Si tu es bloque, quel est techniquement ton probleme?

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 95
    Points : 48
    Points
    48
    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 é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 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
    Points : 3 403
    Points
    3 403
    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...

  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 : 47
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    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
    Points : 3 403
    Points
    3 403
    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

  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 : 47
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    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 é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
    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
    Points : 3 403
    Points
    3 403
    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é.

  11. #11
    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
    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
    Points : 3 403
    Points
    3 403
    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

  13. #13
    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

    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