'Combining different variables into one new variable SAS

I would like to combine different observations from different variables in one variable. The observations are all related to each other and are repeated measurements.

Example:

Current database layout.

**Var1    Dat1    Var2     Dat2     Var3    Dat3**
Obs1a   Dat1a   Dat2a    Dat2a    Obs3a   Dat3a
Obs1b   Dat1b   Dat2b    Dat2b    Obs3b   Dat3b
Obs1c   Dat1c   Dat2c    Dat2c    Obs3c   Dat3c
Obs1d   Dat1d   Dat2d    Dat2d    Obs3d   Dat3d

I want to create a new variable with combined observations:

Var       Dat 
Obs 1a  Dat 1a
Obs 1b  Dat 1b
....    ...
Obs 2a  Dat 2a
Obs 2b  Dat 2b
....    ...  
Obs 3c  Dat 3c
Obs 3d  Dat 3d

Could somebody explain me how to do this in SAS?

sas


Solution 1:[1]

Create 2 arrays of the "var" and "dat" values. Loop through them and use the OUTPUT statement to create 1 observation for each value in the arrays.

data test;
input var1 $ dat1 $ var2 $ dat2 $ var3 $ dat3 $;

datalines;
Obs1a Dat1a Dat2a Dat2a Obs3a Dat3a
Obs1b Dat1b Dat2b Dat2b Obs3b Dat3b
Obs1c Dat1c Dat2c Dat2c Obs3c Dat3c
Obs1d Dat1d Dat2d Dat2d Obs3d Dat3d
;
run;

data test2(keep=var dat);
set test;
array v[3] var1-var3 ;
array d[3] dat1-dat3;
format var dat $8.;

do i=1 to 3;
    var = v[i];
    dat = d[i];
    output;
end;
run;

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 DomPazz