循环选择要从分析中忽略的变量

问题描述

我有包含大量变量的数据集,我需要对这些数据集运行 PCA,每次删除一个变量。以下是示例数据集的 20 个变量。我想在从每个 PCA 解决方案中删除一个变量的情况下运行 PCA。例如,第一个 PCA 解决方案将包含除 Var_1_GroupA 之外的所有变量,第二个将包含除 Var_2_GroupA 之外的所有变量等。我熟悉使用宏编写循环但不确定如何使用宏或 Python 中的代码完成以下任务。

Var_1_GroupA 
Var_2_GroupA 
Var_1_GroupB 
Var_2_GroupB 
Var_3_GroupB 
Var_1_GroupC 
Var_2_GroupC 
Var_3_GroupC 
Var_4_GroupC 
Var_5_GroupC 
Var_1_GroupD 
Var_1_GroupE 
new_Var_1_GroupA 
new_Var_1_GroupB 
new_Var_1_GroupC 
new_Var_2_GroupC 
Var_1_GroupF 
Var_1_GroupG 
Var_1_GroupH 
Var_2_GroupH 

解决方法

在下面的示例中,我创建了 10 个变量,然后每次都使用一组不同的变量运行一个简单的 means 命令 - 一次排除一个变量。您可以编辑代码以匹配您的变量和分析代码。

data list list/var1 to var10 (10F1).
begin data
    1 2 3 4 5 6 7 8 9 9
    5 4 3 6 3 8 1 2 5 8
    0 8 6 4 2 1 3 5 7 9
end data.
dataset name wrk.

define !loopit (!pos=!cmdend)
!do !a !in(!1)
    means 
    !do !b !in(!1) !if (!b<>!a) !then !b !ifend !doend 
    .
!doend
!enddefine.

!loopit var1 var2 var3 var4 var5 var6 var7 var8 var9 var10 .

请注意,您必须在宏调用中列出变量名称,不能使用 var1 to var10

如果您在根据自己的具体需求进行调整时遇到问题,这些对调试宏非常有帮助:

set mexpand=on.
set mprint=on.