SPSS 设置输出表格小数位数
作者:Ruben Geert van den Berg,发布于 SPSS Tools
SPSS 没有提供简便的方法来设置输出表格的小数位数。本教程介绍一个非常简单的工具,用于在生成基本输出表格后设置小数位数。它最适合简单的表格,例如 DESCRIPTIVES (描述统计),MEANS (均值) 或 CROSSTABS (交叉表)。
设置输出表格的小数位数
- 首先,确保已安装并正确运行 SPSS Python Essentials。
- 下载并双击 SPSS Output Decimals Tool (SPSS 输出小数位数工具) 以进行安装。请注意,这是一个 SPSS custom dialog (SPSS 自定义对话框)。
- 运行一个或多个表格,例如使用 DESCRIPTIVES、MEANS 或 CROSSTABS 命令。在 output viewer window (输出查看器窗口) 中选择一个或多个表格。
- 转到 Utilities(实用程序)
Set Decimal Places for Output Tables(设置输出表格小数位数)。
- 选择要处理所有选定表格的列以及所需的小数位数。
- 单击 O k(确定) 或 P aste(粘贴) 并运行 syntax (语法)。
- 要为不同的列设置不同的小数位数,可以多次对同一个表格运行该工具,并在每次运行中指定不同的列和小数位数。[syntax example (语法示例)] 展示了如何快速执行此操作。
指定列
下图说明了如何指定列。 请注意,第一个“columns”不计算在内;根据 SPSS pivot table (透视表) 术语,这些不是列,而是行标签。这种区别对于 SPSS table templates (.stt files)(SPSS 表格模板(.stt 文件))以及该工具使用的 Python 脚本非常重要。
请注意,行和列标签永远不会受到 Output Decimals tool (输出小数位数工具)的影响。 尽管该图在此处显示的是 value labels (“Very bad” 等等)(值标签),而不是值,但情况并非总是如此。 如果显示值,则可以通过 FORMATS 轻松设置行和列标签的小数位数。
SPSS 输出中的小数位数 - 替代方案
- 由于 SPSS version 14(SPSS 14 版本)中引入了 Python,因此 Python scripting (Python 脚本) 是设置输出表格小数位数的首选方式。 它提供的控制级别基本上是无限的,但是大多数用户可能会发现 Python 脚本难以编写,并且需要大量的语法。 Output decimals tool (输出小数位数工具) 在底层使用了 Python 脚本。
- 设置输出表格小数位数的经典方法是 SPSS script (SPSS 脚本)。 请注意,SPSS scripts (.sbs files)(SPSS 脚本(.sbs 文件))与 SPSS syntax (.sps) files(SPSS 语法(.sps 文件))截然不同。 自从 SPSS 14 版本中引入 Python scripting (Python 脚本) 作为其替代品以来,SPSS 脚本被认为是已弃用的。
- SPSS OUTPUT MODIFY 可用于修改 SPSS 输出表格的几乎所有内容,包括小数位数和文本样式。 但是,由于其复杂性,我们发现很难用它来完成任务。 就个人而言,我们强烈偏爱更简单的工具,即使它们提供的功能较少。
SPSS Python 语法示例
您可以通过点击 这里 获取此工具的 SPSS Python 语法版本,其中包含我们工具的一些基本测试,而不是使用我们刚刚讨论的 Custom Dialog (自定义对话框)。
**************10. CREATE DATA.
**
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.