SPSS Statistics is a software package used for statistical analysis. Long produced by SPSS Inc., it was acquired by IBM in 2009. The current versions (2015) are officially named IBM SPSS Statistics. Companion products in the same family are used for survey authoring and deployment (IBM SPSS Data Collection), data mining (IBM SPSS Modeler), text analytics, and collaboration and deployment (batch and automated scoring services).
The software name originally stood for Statistical Package for the Social Sciences (SPSS),[2] reflecting the original market, although the software is now popular in other fields as well, including the health sciences and marketing.

A lot of online vendor tools provide a data value on a multi-select question however they leave the value missing if the respondent didn’t select it. Most of the analysis I want to do needs to have a zero (or some other value) present in order to calculate the statistics correctly.

If you frequently need to have your data split into equal groups, this SPSS macro is the way to go! You can just tell it how many groups you want and the variable you want to create to store group belonging and WHAM! it randomizes the list and adds a new field showing the groups.

In the code below I show two examples of the SPSS macro. One that will randomize the group and split it out, the second allows you to use another variable before breaking them into groups (In case you want a certain order to them.) Both macros greatly reduce the amount of work needed to do in SPSS.

*/////////////////////.
DEFINE !Rand_Group (Groups !TOKENS (1) / NewVar !TOKENS (1))
Match files file=* / DROP !NewVar.
Compute Rand=RV.UNIFORM(0,1).
SORT CASES BY Rand (A).
compute row=$casenum.
RANK VARIABLES=row (A) /NTILES (!Groups) into !NewVar /PRINT=YES /TIES=HIGH.
Match files file=* /drop row Rand.
VARIABLE LEVEL !NewVar (Nominal).
Var label !NewVar "Random Group".
Val labels !NewVar 1'One' 2'Two' 3'Three' 4'Four' 5'Five' 6'Six' 7'Seven' 8'Eight' 9'Nine' 10'Ten'.
Freq !NewVar.
!ENDDEFINE.
*/////////////////////.
!Rand_Group Groups=10 NewVar=Rand_GP.
/* If you want to first sort them on a variable the below macro will handle that for you.
*/////SPSS macro 2////////////////.
DEFINE !Group (Sorter !TOKENS (1) / Groups !TOKENS (1) / NewVar !TOKENS (1))
Match files file=* / DROP !NewVar.
SORT CASES BY !Sorter (A).
compute row=$casenum.
RANK VARIABLES=row (A) /NTILES (!Groups) into !NewVar /PRINT=YES /TIES=HIGH .
Match files file=* /drop row.
VARIABLE LEVEL !NewVar ( ORDINAL ).
Var label !NewVar "Group".
Val labels !NewVar 1'One' 2'Two' 3'Three' 4'Four' 5'Five' 6'Six' 7'Seven' 8'Eight' 9'Nine' 10'Ten'.
Freq !NewVar.
!ENDDEFINE.
*/////////////////////.
!Group Sorter=numords Groups=10 NewVar=Dec_Frequency.

This page is a simple introduction to SPSS macros. There are several fully (line- by-line) commented examples of macro. Overview of several macro-related …

A few years back I fielded a national study on the frequency of visiting restaurant chains. In SPSS I did correlation analysis however, as is always the case, showing a correlation matrix to the client is not an option (if I want them to understand anything.)

So I took the matrix and imported into SYSTAT then computed an Additive tree. Additive trees examine the response patterns across variables and group them, according to their similarities, in the shape of a two-dimensional tree. The closer items appear to each other, the higher the correlation between them. (The color coding is subjective and is just added to aide interpretation)

The Additive Tree below is much easier to evaluate as clear patterns can be seen in how consumers “see” the chains.

Here’s a great book to get ideas on conveying data visually

And here is a book utilizing SYSTAT by one of the programmers. I learned the vast majority of my statistics from this great book!