Date: Sun, 30 Mar 2008 01:03:53 -0700
Reply-To: Doaa <d_faik@HOTMAIL.COM>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Doaa <d_faik@HOTMAIL.COM>
Organization: http://groups.google.com
Subject: Re: saving and opening data sets
Content-Type: text/plain; charset=ISO-8859-1
On Mar 27, 6:21 pm, mlhow...@avalon.net (Mary) wrote:
> Doaa,
>
> I realized from data_null's solution that you wanted 3 columns, not one; =
> here is my solution modified to do the 3 columns, and also using =
> data_null's create logic to cut down on the data step code.
>
> -Mary
>
> %Macro runiml(i);
>
> PROC IML;
>
> start mod1;
>
> seed=3D12345;
>
> p=3D3;
>
> n=3D40;
>
> h=3D((n-1)**2/n)* betainv(0.05,(p/2),((n-p-1)/2));
>
> m=3D{1 4 2};
>
> s=3D{ 1 .4 .16,
>
> .4 1 .4,
>
> .16 .4 1};
>
> u=3DROOT(s);
>
> x=3DJ(n,1,1)*m + NORMAL(J(n,p,seed))*u;
>
> print x;
>
> colname =3D {'Var1' 'Var2' 'Var3'};
>
> create setiml from x[colname=3Dcolname];
>
> append from x;
>
> finish;
>
> run mod1;
>
> quit;
>
> run;
>
> %Mend runiml ;
>
> %Macro docalls;
>
> %Local I;
>
> %Do I =3D 1 %To 10 ;
>
> %runiml(&i);
>
> data set&i;
>
> set setiml;
>
> run;
>
> %End ;
>
> %Mend docalls ;
>
> %docalls;
>
> run;
>
> %Macro dosimulation;
>
> %Local I;
>
> %Do I =3D 1 %To 10 ;
>
> proc means data=3Dset&i;
>
> run;
>
> run;
>
> %End ;
>
> %Mend dosimulation ;
>
> %dosimulation;
>
> run;
>
>
>
> ----- Original Message -----=20
> From: Doaa=20
> To: SA...@LISTSERV.UGA.EDU=20
> Sent: Thursday, March 27, 2008 4:02 AM
> Subject: Re: saving and opening data sets
>
> On Mar 26, 6:53 pm, datan...@GMAIL.COM ("data _null_,") wrote:
> > Which matrix do you need to "output"? Is it X below.
> > Will REPLICATE be set to 1000 when you get this working as desired.
>
> > On Wed, Mar 26, 2008 at 10:35 AM, Doaa <d_f...@hotmail.com> wrote:
> > > i made a program on proc iml that generate a data from a =
> multivariate
> > > normal distribution, that i will use in simulation study iwant to
> > > generate about 1000 data sets. i made it by loop statment but my
> > > problem now how to save each data set with a separeate name and =
> how to
> > > reopen these data sets again . i think it is done by a loop but i
> > > don't know how to do it.please replay as sson as possible
> > > my code was
> > > PROC IML;
> > > do Replicate=3D1 to 10;
> > > seed=3D12345;
> > > p=3D3;
> > > n=3D40;
> > > h=3D((n-1)**2/n)* betainv(0.05,(p/2),((n-p-1)/2));
> > > m=3D{1 4 2};
> > > s=3D{ 1 .4 .16,
> > > .4 1 .4,
> > > .16 .4 1};
> > > u=3DROOT(s);
> > > x=3DJ(n,1,1)*m + NORMAL(J(n,p,seed))*u;
> > > end;
> > > run;
> > > quit;- Hide quoted text -
>
> > - Show quoted text -
>
> yes ineed to output X 1000 times, but here i put 10 instead of 1000
> as atrial program.- Hide quoted text -
>
> - Show quoted text -
a lot of thanks, i tried it and it work well.
|