Statistics 循环通过列对每个列执行分析

Statistics 循环通过列对每个列执行分析,statistics,spss,spss-modeler,Statistics,Spss,Spss Modeler,我有超过338列,每列都有不同的药物名称。我想做的是使用代码循环遍历所有列。此代码用于一种特定药物。问题是我有338个不同的药名。代码是: NPTESTS /INDEPENDENT TEST (PLIN3 CYFIP2 IL2RA HSD3B1 IL2RB PYROXD1 ZBED4 MCTP1 LAMA3 CTSC EDEM1 LIF PIM3 PPARA SLC6A11 THNSL2 ZNF697) GROUP (drug_1) MANN_WHITNEY KRUSKAL_WALL

我有超过338列,每列都有不同的药物名称。我想做的是使用代码循环遍历所有列。此代码用于一种特定药物。问题是我有338个不同的药名。代码是:

NPTESTS 
/INDEPENDENT TEST (PLIN3 CYFIP2 IL2RA HSD3B1 IL2RB PYROXD1 ZBED4 MCTP1 LAMA3 CTSC EDEM1 LIF PIM3 
    PPARA SLC6A11 THNSL2 ZNF697) GROUP (drug_1) MANN_WHITNEY KRUSKAL_WALLIS(COMPARE=PAIRWISE) 
  /MISSING SCOPE=ANALYSIS USERMISSING=EXCLUDE
  /CRITERIA ALPHA=0.05  CILEVEL=95

是否有任何方法可以在不反复运行代码块的情况下循环各列并执行测试?

您可以尝试的一件事是将文件重新构造为长格式,以便所有药物都在一列中,然后您可以通过拆分文件一次对所有药物并行运行测试:

varstocases /make drugval from drug_1 to drug_338/index=drugname(drugval).
sort cases by drugname.
split file by drugname.
*now your code .
NPTESTS 
/INDEPENDENT TEST (PLIN3 CYFIP2 IL2RA HSD3B1 IL2RB PYROXD1 ZBED4 MCTP1 LAMA3 CTSC EDEM1 LIF PIM3 
    PPARA SLC6A11 THNSL2 ZNF697) GROUP (drugval) MANN_WHITNEY KRUSKAL_WALLIS(COMPARE=PAIRWISE) 
  /MISSING SCOPE=ANALYSIS USERMISSING=EXCLUDE
  /CRITERIA ALPHA=0.05  CILEVEL=95.
split file off.
或者,您可以使用SPSS宏循环检查所有药物,并逐个进行测试:

define testdrugs ()
!do !drg=1 !to 338
NPTESTS 
/INDEPENDENT TEST (PLIN3 CYFIP2 IL2RA HSD3B1 IL2RB PYROXD1 ZBED4 MCTP1 LAMA3 CTSC EDEM1 LIF PIM3 
    PPARA SLC6A11 THNSL2 ZNF697) GROUP !concat("(drug_", !drg, ")") MANN_WHITNEY KRUSKAL_WALLIS(COMPARE=PAIRWISE) 
  /MISSING SCOPE=ANALYSIS USERMISSING=EXCLUDE
  /CRITERIA ALPHA=0.05  CILEVEL=95
!doend
!enddefine.
* the macro is defined, now we can call it.
testdrugs .