提取满足某些条件的变量列表,并使用SPSS语法将其存储在新变量中

时间:2019-01-15 11:13:58

标签: spss

我大约有300个变量,并且正在计算它们的偏度和峰度。现在,我想创建一个新的变量,其中包括偏度和峰度在一定范围内的所有那些变量的列表。这个想法是只选择那些满足条件的变量,并对所有其他变量进行归一化。

要计算我正在使用的偏度;

Descriptives A TO Z
/Statistics Skewness.
Execute.

我知道这不是有效的语法,但我需要这样的内容:

Compute x= if(Skewness(A TO Z)>1)

请为此提供SPSS语法。

1 个答案:

答案 0 :(得分:1)

有多种方法可以解决此问题,所以可能有一种更简单的方法。

您只需要将“ var1 TO varN”更改为变量列表,并在创建标志的两条COMPUTE行上将您想要的偏斜度和峰度条件更改为任意值即可。

如果我这样做,我会更进一步,并使用WRITE OUT =“ .sps” / CMD将规范化构建为语法。 INSERT FILE =“ .sps”,但这不是您要的。

time-relation

如果在计算标志并将其替换后省略选择数据块,它将计算符合您条件的变量的规范化版本。这将计算新变量,并且您将要添加语法文件的文件位置(在WRITE和INSERT命令中替换“〜/”),并将引用为“ RAWDATA”的数据集的名称更改为您的数据集名称是:

DATASET DECLARE DistributionSyntax.
OMS
  /SELECT TABLES
  /IF SUBTYPES=["Descriptives"] INSTANCES=[1]
  /DESTINATION FORMAT=SAV OUTFILE = 'DistributionSyntax'.
EXAMINE VARIABLES=var1 TO varN
  /PLOT NONE
  /STATISTICS DESCRIPTIVES
  /CINTERVAL 95
  /MISSING PAIRWISE
  /NOTOTAL.
OMSEND.
DATASET ACTIVATE DistributionSyntax.

USE ALL.
FILTER OFF.
SELECT IF ANY(Var2,'Skewness','Kurtosis').
EXECUTE.
STRING VarName (A64).
COMPUTE SkewnessFlag = (Var2 = 'Skewness' AND ABS(Statistic) > 2).
COMPUTE KurtosisFlag = (Var2 = 'Kurtosis' AND ABS(Statistic) > 2).
COMPUTE VarName = CHAR.SUBSTR(Var1,1,CHAR.INDEX(Var1,' ')-1).
EXECUTE.

USE ALL.
COMPUTE filter_$=(SkewnessFlag = 1).
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
FRE VarName.

USE ALL.
COMPUTE filter_$=(KurtosisFlag= 1).
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.
FRE VarName.

USE ALL. 
FILTER OFF. 
EXECUTE.