Statistical programming, matrix languages, and more

Do loop Output

Reply
Occasional Contributor
Posts: 12

Do loop Output

Hi,

I want  show,  before ending DO loop ,the observation N and the vector P  for any i value in data_set

in this proc IML :

proc iml;

M_NP ={1,

    2,

    3,

    4,

    5,

    6};


P= j(1000,1,.);
j=0;
do i=1 to 5;

n= round((M_NP[i+1]-M_NP)* 100);
U= j(n,1,.);
call randgen(U,"uniform");
P[j+1:j+n]= M_NP+(M_NP[i+1]-M_NP)* U;
j=j+n;
end;
quit;

How do i do?

SAS Super FREQ
Posts: 3,620

Re: Do loop Output

If you want to print N and P for each iteration, use

print i N P;

Since P has 1,000 rows, this is a lot of printing of mostly missing values. You could also say

print i N (P[j+1:j+n])[label="P"];

Occasional Contributor
Posts: 12

Re: Do loop Output

thank you very much...

but If i want show N and P for each iteration in data set  (the print in output is too long),

how do I do?

SAS Super FREQ
Posts: 3,620

Re: Do loop Output

You want to create a data set that contains N and P during the loop?

Use the CREATE and APPEND statments like this:

create Out var {N Pi};

do i=1 to 5;

   n= round((M_NP[i+1]-M_NP)*100);

   U= j(n,1,.);

   call randgen(U,"uniform");

   Pi = M_NP+(M_NP[i+1]-M_NP)*U;

   append;

end;

close;

Ask a Question
Discussion stats
  • 3 replies
  • 374 views
  • 3 likes
  • 2 in conversation