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

Macro Discussion :

interprêtation de la macro tirage avec remise


Sujet :

Macro

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Points : 54
    Points
    54
    Par défaut interprêtation de la macro tirage avec remise
    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
     /*Table d'exemple : 100 observations */
    data test;
      do a=100 to 200;
        output;
      end;
    run;
     
    /* Tirage au sort de 20 observations dans cette table */
    data ech1 (drop=i);
      do i=1 to 20; 
        select=ceil(ranuni(0)*n);
        set test point=select nobs=n; 
        position=select;
        output;
      end;
      stop; 
    run; 
     
    La v ariable position correspond à la position de l'observation dans la table de départ.
    J'ai trouvé ce code pour le tirage avec remise dans la faq sas, est-ce-que quelqu'un parmis vous pourrait me l'expliquer?? ce qui me parrait un peu bizarre c'est la boucle do à l'interieur de l'étape data ?Merci

  2. #2
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    Bonjour,
    Que veux-tu que l'on t'explique la macro ou le tirage avec remise?
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par fafabzh6 Voir le message
    Bonjour,
    Que veux-tu que l'on t'explique la macro ou le tirage avec remise?
    Si j'ai bien compris:
    le table ech est construite à partir de la table test, le pointeur se positionne sur l'un des éléments de la table "test" tiré au hasard par "ranuni"!!

    ce que je ne comprend pas,
    SELECT=ceil(ranuni(0)*n);

    1/ Comment "n" le nombre d'observations de test est-il renseigné? aucune instruction ne le renseigne avant???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    do i=1 TO 20; 
        SELECT=ceil(ranuni(0)*n);
        SET test point=SELECT nobs=n; 
        position=SELECT;
        output;
      end;
      stop;
    2/ la boucle "Do" à l'interieur de l'étape Data??

  4. #4
    Membre actif

    Profil pro
    Inscrit en
    Avril 2008
    Messages
    233
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 233
    Points : 254
    Points
    254
    Par défaut
    1) n est renseigné par l'instruction SET test point=SELECT nobs=n;
    C'est la particularité de SAS que je n'aime pas, il exécute le code selon l'ordre qui est loin d'être évident. Dans ton exemple, il y a un étape de "pré-exécution", dans lequel SAS lit l'en-tête de la table pour savoir le nombre des lignes, l'affecte à la variable n, et uniquement après ça commence l'exécution d'étape data.
    2) oui, tu as droit de faire des boucles do à l'intérieur d'une étape data. Ou j'ai mal compris la question ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par green_fr Voir le message
    2) oui, tu as droit de faire des boucles do à l'intérieur d'une étape data. Ou j'ai mal compris la question ?
    Donc sas fait une pré-exécution, c'est vrai ça m'a paru bizzare d'executer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT=ceil(ranuni(0)*n);
    avant de renseigner "n"

    Pour la boucle DO ma question est:

    Quelle est la différence entre mettre la boucle Do à l'interieur de l'étape Data ou à l'extérieur??

  6. #6
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 219
    Points
    16 219
    Par défaut
    Bonjour,
    Ici la boucle do est utilisée pour faire un tirage de 20 personnes, chaque personne tirée au sort est ensuite "imprimer " dans la table avec le output.
    La boucle do dans l'étape data permet de ne créer qu'une seule table.

    Si la boucle do avait été à l'extérieure de l'étape data tu aurais dû créer 20 tables et très certainement les grouper avec un set pour obtenir le résultat voulu.....
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 103
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par fafabzh6 Voir le message
    Bonjour,
    Ici la boucle do est utilisée pour faire un tirage de 20 personnes, chaque personne tirée au sort est ensuite "imprimer " dans la table avec le output.
    La boucle do dans l'étape data permet de ne créer qu'une seule table.

    Si la boucle do avait été à l'extérieure de l'étape data tu aurais dû créer 20 tables et très certainement les grouper avec un set pour obtenir le résultat voulu.....
    merci pour les détails!!

    je vais poser une autre question dans une autre discussion!

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

Discussions similaires

  1. [XL-2010] Macro + tirage aléatoire avec condition
    Par emarnolydia dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/01/2015, 08h19
  2. Tirage avec remise - Bootstrap
    Par FanFan44 dans le forum SAS STAT
    Réponses: 3
    Dernier message: 10/07/2013, 16h56
  3. Tirage aléatoire avec remise
    Par ndiayette dans le forum SAS STAT
    Réponses: 3
    Dernier message: 16/05/2008, 22h14
  4. [VBA]macro Word avec données de MySQL
    Par Taz_8626 dans le forum VBA Word
    Réponses: 3
    Dernier message: 17/07/2006, 11h39
  5. Probleme de tirage avec rand ?
    Par sunshine33 dans le forum MFC
    Réponses: 5
    Dernier message: 14/01/2004, 15h57

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