我有一个数据集,其中每个案例都有以下一组变量:
VarA1.1 到 VarA25.185(共 4625 个变量)
VarB.1 至 VarB.185(共 185 个变量)
对于每种情况,VarA1.1、VarA2.1、VarA3.1 等都链接到同一个 VarB.1。
我想使用 DO REPEAT 函数来使用 VarA 和 VarB 搜索每个 .1 实例。
示例代码:
DO REPEAT VarA = VarA1.1 to VarA25.185
/ VarB = VarB.1 to VarB.185.
if (VarA = X) AND ((VarB-Y)<0)
VarC = Z.
END REPEAT.
EXE.
然而,似乎是因为 VarA 和 VarB 的重复列表中有不同数量的变量,它们没有配对。我想将每个 VarA#(1-25).1 与 VarB.1、每个 VarA#(1-25).2 与每个 VarB.2 等关联到 VarB.185,以便在重复函数中正确使用变量配对。
谢谢!
最佳答案
另一种方法是使用 LOOP
在外面和一个 DO REPEAT
在里面。所以这里有一些示例数据,只有三个 A 变量从 1 到 10。
SET SEED 10.
INPUT PROGRAM.
LOOP Id = 1 TO 100.
END CASE.
END LOOP.
END FILE.
END INPUT PROGRAM.
DATASET NAME Sim.
*Making random data.
VECTOR A1.(10).
VECTOR A2.(10).
VECTOR A3.(10).
VECTOR B.(10).
NUMERIC X Y.
DO REPEAT a = A1.1 TO Y.
COMPUTE a = RV.BERNOULLI(0.5).
END REPEAT.
EXECUTE.
所以这里是你要注意的部分。您的
DO REPEAT
当前循环遍历 25 个变量。虽然这会切换它,所以 LOOP
部分超过了 25 个变量,但 DO REPEAT
遍历每个 A 向量。VECTOR A1 = A1.1 TO A1.10.
VECTOR A2 = A2.1 TO A2.10.
VECTOR A3 = A3.1 TO A3.10.
VECTOR B = B.1 TO B.10.
VECTOR C.(10).
LOOP #i = 1 TO 10.
DO REPEAT A = A1 A2 A3.
IF (A(#i) = X) AND (B(#i)-Y<0) C.(#i) = B(#i).
END REPEAT.
END LOOP.
EXECUTE.
代码高尔夫可能不会击败宏方法,因为您必须定义所有这些
VECTOR
声明。但我认为这是一种在概念上清晰的编写程序的方式。
关于repeat - SPSS:使用不同数量的匹配变量进行重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42218725/