在SPSS中获取向量的长度

时间:2014-05-23 14:27:24

标签: spss

我有一个包含大量变量的sav文件。我现在要做的是创建宏/例程,使用SPSS语法检测一系列项集的基本属性。

COMPUTE scale_vars_01 = v_28 TO v_240.

上面的代码旨在定义一系列项目,我想进一步详细说明。如何获得"数组中的元素数量" scale_vars_01,作为整数?

感谢您的信息。 (正如你所看到的,SPSS语法对我来说仍然有些奇怪,我正在考虑使用Python,但是对于我相对简单的目的来说,这可能是一个太多的开销。)

2 个答案:

答案 0 :(得分:2)

一种方法是使用COUNT,例如:

COUNT Total = v_28 TO v_240 (LO THRU HI).

这将计算向量中的所有有效值。如果向量包含混合类型(例如字符串和数字)或向量具有缺失值,则此方法无效。使用DO REPEAT获取整个计数的低效方法如下:

DO IF $casenum = 1.
COMPUTE Total = 0.
DO REPEAT V = v_28 TO V240.
  COMPUTE Total = Total + 1.
END REPEAT.
ELSE.
  COMPUTE Total = LAG(Total).
END IF.

这适用于混合类型变量,并将计算具有缺失值的字段。 (DO IFCOUNT的工作方式相同,这会强制数据传递,但对于大型数据集和大型列表,只会针对第一种情况进行评估。)

Python可能是最有效的方法 - 如果您熟悉它,我认为没有理由不使用它。

BEGIN PROGRAM.
import spss
beg = 'X1'
end = 'X10'

MyVars = []
for i in xrange(spss.GetVariableCount()):
  x = spss.GetVariableName(i)
  MyVars.append(x)

len = MyVars.index(end) - MyVars.index(beg) + 1
print len 
END PROGRAM.

答案 1 :(得分:2)

Statistics有一个可用于定义变量集的内置宏工具,但Python apis提供了更强大的方法来访问和使用元数据。还有一个扩展命令SPSSINC SELECT VARIABLES,它可以根据变量元数据定义宏,例如名称,测量级别,类型和其他属性中的模式。它会生成一个宏,列出这些变量,然后可以在标准语法中使用。