Solved
New Contributor
Posts: 3

# 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;

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;

Posts: 3,167

## 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=_;

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.