Les posteurs les plus actifs de la semaine
Aucun utilisateur |
Sujets les plus vus
boucle à l'intérieur d'une proc sql
2 participants
Page 1 sur 1
boucle à l'intérieur d'une proc sql
Bonjour,
J’aimerais savoir s’il est possible de faire une boucle à l’intérieur d’un proc sql.
Je joins ci-dessous le bout de programme concerné. Il fait appel à "nbsimul" proc sql. J’aimerais faire la même chose avec une seule étape sql qui créerait "nbsimul" variables t_&i et un proc transpose à la fin. Y a-t-il un moyen de faire ça ? Ou en tout cas d'arriver à créer une table avec "nbsimul" lignes plus directement qu'en créant "nbsimul" tables?
Merci d’avance
J’aimerais savoir s’il est possible de faire une boucle à l’intérieur d’un proc sql.
Je joins ci-dessous le bout de programme concerné. Il fait appel à "nbsimul" proc sql. J’aimerais faire la même chose avec une seule étape sql qui créerait "nbsimul" variables t_&i et un proc transpose à la fin. Y a-t-il un moyen de faire ça ? Ou en tout cas d'arriver à créer une table avec "nbsimul" lignes plus directement qu'en créant "nbsimul" tables?
Merci d’avance
- Code:
%macro distrib_T_H0(nbsimul);
data stat_t_h0;set _null_;run;
%do i = 1 %to &nbsimul;
%if %sysfunc(mod(&i,1000))=0 %then DM "log; clear; ";
proc sql ;
create table stat_t_&i as select
sum( col&i*ln_thetaia) as t
FROM simH0_t ;
quit;
data stat_t_h0;
set stat_t_h0 stat_t_&i;
run;
proc datasets lib=work ; delete stat_t_&i;run;quit;
%end;
%mend distrib_T_H0;
fbn- Nombre de messages : 12
Date d'inscription : 19/02/2015
Re: boucle à l'intérieur d'une proc sql
Bonjour,
tu peux tester ça :
Dis nous si c'est ok avec ça !
Niaboc
tu peux tester ça :
- Code:
%macro distrib_T_H0(nbsimul);
proc sql ;
create table stat_t_h0 (drop=temp) as select
"temp" as temp
%do i = 1 %to &nbsimul;
, sum( col&i*ln_thetaia) as t&i
%end;
from simH0_t ;
quit;
proc transpose data=stat_t_h0 out=stat_t_h0;
run;
%mend distrib_T_H0;
Dis nous si c'est ok avec ça !
Niaboc
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: boucle à l'intérieur d'une proc sql
c'est bon, ça marche!
Enfin ça rame pas mal quand j'ai beaucoup de simulations (donc beaucoup de variables dans ma table créée par la proc sql).
Du coup, à moins de trouver une autre idée, je pense tenter une approche qui mêle boucle interne et boucle externe.
En tout cas merci pour l'astuce du temp, ça parait évident après coup, mais sur le moment, je n'avais pas eu l'idée...
Enfin ça rame pas mal quand j'ai beaucoup de simulations (donc beaucoup de variables dans ma table créée par la proc sql).
Du coup, à moins de trouver une autre idée, je pense tenter une approche qui mêle boucle interne et boucle externe.
En tout cas merci pour l'astuce du temp, ça parait évident après coup, mais sur le moment, je n'avais pas eu l'idée...
fbn- Nombre de messages : 12
Date d'inscription : 19/02/2015
Re: boucle à l'intérieur d'une proc sql
Sinon tu peux aussi faire un :
à la place du :
ça va un peu plus vite.
- Code:
proc append data=stat_t_ base=stat_t_h0 force;
run;
à la place du :
- Code:
data stat_t_h0;
set stat_t_h0 stat_t_&i;
run;
ça va un peu plus vite.
niaboc- Nombre de messages : 1001
Age : 37
Localisation : Paris
Date d'inscription : 05/05/2008
Re: boucle à l'intérieur d'une proc sql
Effectivement, ça devrait être un peu mieux avec une proc append, merci.
fbn- Nombre de messages : 12
Date d'inscription : 19/02/2015
Sujets similaires
» Chi2 sous Sas : proc freq ou proc surveyfreq ?
» khi² de pearson-proc genmod/proc logistic
» Boucle d'histogramme
» Equivalent dans une boucle ?
» calcul avec boucle
» khi² de pearson-proc genmod/proc logistic
» Boucle d'histogramme
» Equivalent dans une boucle ?
» calcul avec boucle
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|