How to set two data sets?

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

How to set two data sets?


I have  two data sets A and B; A has 1000 observations and B has 40 observations. They have no commom variables. I want to create a data set C that has 1000x40 observations, for each observation of data A having 40 observations of data B. My code is below:

Data C;

do i=1 to 1000;

  set A;

do j=1 to 40

set B;

output;

end;

end;

Run;

Data c has only 40 observations. The log display: only 2 observations from data A; 40 observations from B;

Can you help me to fix this problem? Thank you,

Zhu


Accepted Solutions
Solution
‎04-24-2012 12:16 AM
New Contributor
Posts: 3

Re: How to set two data sets?

data c;

set data A;

do i=1 to n;

set data B nobs=n point=i;

output;

end;

run;

View solution in original post


All Replies
Solution
‎04-24-2012 12:16 AM
New Contributor
Posts: 3

Re: How to set two data sets?

data c;

set data A;

do i=1 to n;

set data B nobs=n point=i;

output;

end;

run;

Respected Advisor
Posts: 3,156

Re: How to set two data sets?

Looks like you have it figured out yourself by using a classic data step way. Although I think it is worth mentioning that for this kind of task, SQL seems to have a native edge, as SQL join generates Cartesian products to start with.

proc sql;

create table c as

select * from a,b;

quit;

BTW, with the advent of Hash(), data step has been granted the similar power as SQL join:

data c (drop=_Smiley Happy;

  if _n_=1 then do;

  set a (obs=1);

dcl hash h(dataset:'a', ordered:'a');

h.definekey(all:'y');

h.definedone();

dcl hiter hi('h');

  end;

  set b;

  _rc=hi.first();

  do while (_rc=0);

output;

_rc=hi.next();

end;

run;

Kindly regards,

Haikuo

🔒 This topic is solved and locked.

Need further help from the community? Please ask a new question.

Discussion stats
  • 2 replies
  • 229 views
  • 0 likes
  • 2 in conversation