Dichotomie sous sas
hassu
-
namouss9310 -
namouss9310 -
Bonjour,
aidez moi SVP j'ai une base que je veus diviser en 10 (SOUS SAS) de maniere aléatoire ,
pour l'instant j'arrive juste à la diviser en deux!!
voila le programme:
data base1 base2;
set base*base en entré;
if (&totale +1-_n_)*ranuni(&seed) <= (&totale/2 - _c01) then do;
_c01 + 1;
output base1;
end;
else do;
_c02 + 1;
output base2;
end;
run;
merci de votre aide
aidez moi SVP j'ai une base que je veus diviser en 10 (SOUS SAS) de maniere aléatoire ,
pour l'instant j'arrive juste à la diviser en deux!!
voila le programme:
data base1 base2;
set base*base en entré;
if (&totale +1-_n_)*ranuni(&seed) <= (&totale/2 - _c01) then do;
_c01 + 1;
output base1;
end;
else do;
_c02 + 1;
output base2;
end;
run;
merci de votre aide
2 réponses
Hello,
Tu peux tenter un truc comme ça et ça peut s'optimiser en passant par une macro :
data tab;
set tab;
alea=ranuni(12345);
run;
proc sort data=tab;
by alea;
run;
data tab;
set tab;
n=_N_;
run;
proc rank data=tab groups=10 out=tab_fin;
var n;
run;
data tab1 tab2 tab3 tab4 ...;
set tab_fin;
n=n+1;
if n=1 then output tab1;
if n=1 then output tab2;
....
run;
Tu peux tenter un truc comme ça et ça peut s'optimiser en passant par une macro :
data tab;
set tab;
alea=ranuni(12345);
run;
proc sort data=tab;
by alea;
run;
data tab;
set tab;
n=_N_;
run;
proc rank data=tab groups=10 out=tab_fin;
var n;
run;
data tab1 tab2 tab3 tab4 ...;
set tab_fin;
n=n+1;
if n=1 then output tab1;
if n=1 then output tab2;
....
run;
merci pr tn aide