Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS STAT
SAS STAT Forum d'entraide sur les fonctionnalités liées à la statistique sur SAS : statistique descriptive, test, régression, classification
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/03/2011, 14h30   #1
Invité de passage
 
Eric
Inscription : février 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Eric

Informations forums :
Inscription : février 2011
Messages : 4
Points : 2
Points : 2
Par défaut je veux que « les » valeurs de mes variables var1, var2….deviennent des parametres

hello

etant novice sur les macros je voudrais transformer « les » valeurs de mes variables var1, var2….par des parametres.

Help please...Merci d’avance...



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*implementation date*/
%macro prod_date;
 
DATA date;
      format date yymmddn8.; 
 
        %do i = 0 %TO 10;
          date=intnx('month','15jan2010'd,&i,'end'); 
            output;
        %end;
        ;
      run;
      ;
%mend;
 
%prod_date;
 
PROC TRANSPOSE DATA=date 
      OUT=date PREFIX=var;
QUIT;
 
/*exemple tout simple que je cherche a automatiser*/
DATA testF; 
      SET test_20100131 test_20100228 test_20100331; 
run;
 
 
 
/****************************en gros de la meme facon que le precedent code, 
je veux implementer  var1, var2, var3... comme parametre ==> afin d'obtenir 20100131,20100228,20100331,...*/
 
/*avec un parametre ca marche....mais il faut que je le fasse avec plusieurs parametres*/
 
proc sql;
      SELECT var1 INTO: i FROM date; 
quit;
 
DATA test;
      SET vintage.prod_&i;
run;
 
/*maintenant a l'implementer avec plusieurs parametres??*/
%macro plusieursparam;
proc sql;
SELECT 
 
 %do i = 1 %TO 10;
  var&i
  %end;
 
 %do j = 1 %TO 10;
 INTO: &j 
 %end;
 ;
FROM date;
 
quit;
%mend;
%plusieursparam;
tombofeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/03/2011, 14h57   #2
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Salut,
Tu n'as pas été clair dans tes explications, j'espere que c'est ce que tu voulais sinon tu l'adapteras en fonction



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/*implementation date*/
 
/**=====> 1ère partie*/
 
%macro prod_date;
 
DATA date;
format date yymmddn8.; 
 
%do i = 0 %TO 10;
date=intnx('month','15jan2010'd,&i,'end'); 
output;
%end;
;
run;
;
%mend;
 
%prod_date;
 
 
 
DATA DATE;
SET DATE;
TABLE=COMPRESS("TEST_"!!put(date,yymmddn8.));
RUN;
 
 
PROC SQL;
SELECT COUNT(*) INTO:NB_TABLE FROM date;
SELECT TABLE INTO:liste_table separated BY ' ' FROM date;
QUIT;
%put NB=&NB.;
%put liste_table=&liste_table.;
 
 
 
DATA stestF; 
SET &liste_table.;
RUN;
 
/*=====> 2ème partie*/
 
PROC TRANSPOSE DATA=date 
OUT=date(DROP=_name_) PREFIX=var;
QUIT;
 
proc contents DATA=date out=out;
run;
 
PROC SQL;
SELECT COUNT(*) INTO:NB  FROM out;
SELECT name INTO:liste_table separated BY ' ' FROM out;
QUIT;
%put NB=&NB.;
%put liste_table=&liste_table.;
 
 
%MACRO PARAM;
 
%DO i=1 %TO &NB.;
 
%LET var&i=%SCAN(&liste_table.,&i.,' ');
 
PROC SQL;
CREATE TABLE final_&i.
AS SELECT &&var&i.
FROM date;
quit;
 
%end;
 
%MEND;
 
%PARAM;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 14h23   #3
Invité de passage
 
Eric
Inscription : février 2011
Messages : 4
Détails du profil
Informations personnelles :
Nom : Eric

Informations forums :
Inscription : février 2011
Messages : 4
Points : 2
Points : 2
Slt,
Le 1er code est parfait...il me fait meme le compteur de mes dates...nickel
merci merci merci megamind2!!


d'ailleurs j'ai reussi a faire un petit truc de mon cote. pas aussi bon que le tien (avec le compteur) mais ca va aussi

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*implementation of date*/
%macro prod_date;
 
DATA date;
	format date yymmddn8.; 
 
	  %do i = 0 %TO 50;
	    date=intnx('month','15jan2008'd,&i,'end');   /*Initialisation of the date*/
		output;
	  %end;
	  ;
	run;
	;
%mend;
 
%prod_date;
 
PROC TRANSPOSE DATA=date
	OUT=date
	PREFIX=var;
	VAR date;
	RUN;
QUIT;
 
%macro plusieursparam;
 
proc sql;
    SELECT var1 INTO: I_1 
    FROM date;
quit; 
 
DATA test; 
    SET test_&&I_1;     
run;
 
%do i = 2 %TO 36;					/*the counter have to don't exceed the number of existing months*/
proc sql;
    SELECT var&i INTO: I_&i 
    FROM date;
quit; 
 
DATA test; 
	SET test test_&&I_&i;     
run;
 
%end;
 
%mend;
 
%test;
tombofeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 14h45   #4
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h06.


 
 
 
 
Partenaires

Hébergement Web