The VARSTOCASES and CASESTOVARS commands
The below can also be performed using the [:FAQ/mixedR:RESTRUCTURE] command under the DATA menu in SPSS. For the example below we wish to stack columns x and y to make a single column called time. This is particularly useful for converting data from a format suitable for repeated measures to one suitable for multilevel modelling in SPSS. Notice we need to sort the cases before reformatting the data.
DATA LIST FREE / idno x y . BEGIN DATA 001 34 56 002 23 45 003 39 41 004 33 11 005 87 57 006 99 36 END DATA. SORT CASES BY IDNO. VARSTOCASES /MAKE time FROM x y /INDEX = newfact "new var label" (time) /KEEP = idno.
To do the reverse operation we need to use the CASESTOVARS command in conjunction with SORT CASES as below:
DATA LIST LIST/sub score. BEGIN DATA 1 34 1 56 2 23 2 45 3 39 3 41 4 33 4 11 5 87 5 57 6 99 6 36 END DATA. LIST. COMPUTE num=1. IF sub = LAG(sub) num = LAG(num)+1. LIST. SORT CASES BY sub num. CASESTOVARS /ID = sub /INDEX = num. LIST.