微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

循环遍历列以对每个列执行分析

如何解决循环遍历列以对每个列执行分析

我有超过 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 .

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。