2014-05-23 71 views
1

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

COMPUTE scale_vars_01 = v_28 TO v_240. 

上面的代码旨在定义我希望进一步详细观察的一系列项目。我如何获得“数组”scale_vars_01中元素的数量,作为整数?

感谢您的信息。 (如您所见,SPSS语法对我来说仍然很奇怪,我正在考虑使用Python来代替,但这对于我相对简单的目的可能会造成太大的开销)。

回答

1

的一种方法是使用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 IF将工作同样为COUNT,这迫使数据传递,但对于大型数据集,大名单将只评估尚属首例。)

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. 
2

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