SPSS doesn't offer an easy way to set decimal places for output tables. This tutorial proposes a very simple tool for setting decimal places in basic output tables after they've been produced. It works best for simple tables such as DESCRIPTIVES, MEANS or CROSSTABS.
Setting Decimal Places for Output Tables
- First, make sure that the SPSS Python Essentials are installed and run properly.
- Download and double click the SPSS Output Decimals Tool to install it. Note that this is an SPSS custom dialog.
- Run one or more tables, for example with DESCRIPTIVES, MEANS or CROSSTABS. Select one or more of them in the output viewer window.
- Go to .
- Choose which columns you'd like to process for all selected tables and the desired number of decimal places.
- Click syntax. or and run the
- Different decimal places for different columns can be set by running the tool repeatedly over the same tables, specifying different columns and decimal places in each run.The syntax example shows how to do this fast.
Specifying Columns
The diagram below illustrates how to specify columns. Note that the first “columns” don't count; according to SPSS pivot table terminology, these are not columns but row labels.This distinction is important for SPSS table templates (.stt files) as well as the Python scripting used by the tool.
Note that row and column labels are never affected by the Output Decimals tool. Although the diagram shows value labels (“Very bad” and so on) here instead of values, this is not always the case. If values are shown, then decimal places for row and column labels can easily be set by FORMATS.
SPSS Decimal Places in Output - Alternatives
- Since Python was introduced in SPSS version 14, Python scripting is the way to go for setting decimal places for output tables. The level of control it offers is basically unlimited but most users may find Python scripts hard to write and they require a lot of syntax. The output decimals tool uses Python scripting under the hood.
- The classical approach to setting decimal places for output tables is an SPSS script. Note that SPSS scripts (.sbs files) are very different from SPSS syntax (.sps) files. SPSS scripts are considered deprecated since Python scripting was introduced as its successor in SPSS version 14.
- SPSS OUTPUT MODIFY can be used for modifying basically anything about SPSS output tables including decimal places and text styles. Due to its complexity, however, we find it rather hard to get things done with it. Personally, we strongly prefer simpler tools even if they offer less functionality.
SPSS Python Syntax Example
Instead of using the Custom Dialog we just discussed, you may click here for an SPSS Python syntax version of this tool, including some basic tests for our tool.
data list free/id.
begin data
0 0 0 0 0 0 0 0 0 0 0
end data.
do repeat v = v1 to v5.
compute v = rv.binom(5,.5).
end repeat.
************20. GENERATE SOME TABLES.
descriptives v1 v2.
means v1 by v2.
crosstabs v1 by v2/cells column.
************30. DEFINE FUNCTION.
begin program.
def setOutputDecimals(cols,decs):
import SpssClient
SpssClient.StartClient()
outputDoc = SpssClient.GetDesignatedOutputDoc()
outputItems = outputDoc.GetOutputItems()
for index in range(outputItems.Size()):
outputItem = outputItems.GetItemAt(index)
if outputItem.GetType() == SpssClient.OutputItemType.PIVOT and outputItem.IsSelected():
pTable = outputItem.GetSpecificType()
dataCells = pTable.DataCellArray()
for row in range(dataCells.GetNumRows()):
if cols.lower() != 'all':
try:
colList = [int(col) - 1 for col in cols.split(',')] #Because indexed at 0
except:
print "Invalid column specification. Please specify positive integers separated by commas or the 'ALL' keyword."
break
else:
colList = range(dataCells.GetNumColumns())
for col in colList:
try:
dataCells.SetHDecDigitsAt(row,col,decs)
except:
pass
SpssClient.StopClient()
end program.
************40. TEST: SELECT (ONLY) DESCRIPTIVES TABLE IN OUTPUT AND RUN.
begin program.
setOutputDecimals('2,3',0)
setOutputDecimals('4',1)
setOutputDecimals('5',2)
end program.
************50. TEST: SELECT (ONLY) MEANS TABLE IN OUTPUT AND RUN.
begin program.
setOutputDecimals('1',1)
setOutputDecimals('3',2)
end program.
************60. TEST: SELECT (ONLY) CROSSTAB IN OUTPUT AND RUN.
begin program.
setOutputDecimals('all',0)
end program.
THIS TUTORIAL HAS 17 COMMENTS:
By Ed Matsuoka on March 10th, 2015
Thanks for the macro! I have been using this:
SPSSINC MODIFY TABLES subtype="*"
SELECT="<>"
/STYLES APPLYTO=DATACELLS
CUSTOMFUNCTION="customstylefunctions.SetDecimalPlaces(decimals=1)".
but yours works faster.
By Mario Hair on March 16th, 2015
Ruben,
As discussed on linedin I've had problems with this using version 17 and I said I would give you some feedback.
I've run your syntax example and got the descriptive, means and crostabs output.
When I run your program on the descriptive output it changes the min and max to zero dec places but not the mean or st.dev. So seems to work on cols 1&2 but not 3&4.
When I run your program on means it has no effect on cols 1 or 3. However if I run a means and only ask for a single column, e.g.means, then it does work.
When I run your program on crosstabs it works fine but only if I have a single cell output e.g column%. If you ask for two cell outputs, e.g. count and col% then it doesn't work on the col%.
When
By Carol on November 12th, 2015
I am struggling to install the Tool. I have copied the zip folder to my desktop and extracted the files. The folder contains 4 files but none of them have a .spd extension?
•Download and double click the SPSS Output Decimals Tool to install it. Note that this is an SPSS Custom Dialog.
By Ruben Geert van den Berg on November 13th, 2015
Thanks for your comment! However, note that the SPSS Output Decimals Tool is an .spd file (SPSS Custom Dialog).
Yes, an .spd file is technically an archive file so you can unzip it if you're curious regarding its contents. However, for installing it, don't unzip it. Try double clicking the .spd file (or right mouse click => "open with..."). If that doesn't work, then try it from within SPSS and navigate to Utilities => Custom Dialogs => Install Custom Dialog. From there, navigate to and select the downloaded .spd file.
Hope that helps,
Ruben
By Carol on November 13th, 2015
Gee, Ruben, I am sorry to be so dense. But if I double click on that link I can only open or save a ZIP file. So I don't understand your instructions to double click or open an SPD file -- I can't locate an SPD file. The folder has a zip extension and none of the four files in the folder has an SPD extension. For comparison, I have successfully installed several of Hayes' custom dialog SPDs. But I can see an SPD in those folders -- I do not see an SPD in the Output Decimals Tool Folder.