【发布时间】:2019-03-15 19:55:23
【问题描述】:
我有一个非常大的数据集,每个患者有多个诊断 (25),由 SPSS 中的 ICD 10 代码表示。为简洁起见,我发布了我尝试复制的内容的快照,该快照仅使用标记为 DIAG1 到 DIAG3 的 3 个字符串变量和随机代码的测试数据集。
假设每一行代表一个病人。 “O74”列中显示的结果是我试图复制的结果,但到目前为止无济于事(只需手动输入我希望使用语法复制的内容)。本质上是一个存在/不存在二分变量,其中“1”代表在任一“DIAG”列中诊断为“O74”的患者。我尝试过:
do repeat x = DIAG1 to DIAG3.
compute O74 = any(x,"O74001", "O74019").
end repeat.
EXECUTE.
但是,在运行语法时,仅出现上述两个在 DIAG3 中列出的代码的出现。鉴于我非常差的语法技能,我无法理解为什么在使用上述“重复”代码时,DIAG1 和 DIAG2 中的 O74001 和 O74019 的发生率没有包含在变量“O74”中。
理想情况下,我只想在“重复”或“循环”中包含“O74”,而不是输入每个单独的 ICD 代码。语法:
compute flag = char.index(UPPER(DIAG2), 'O74') > 0.
确实工作得很好,但是,按照编码,它一次只工作一个“DIAG”列。鉴于患者数量惊人(> 3,000,000)和每位患者的诊断数量(25),将其合并到一个循环中将是理想的。已经进行了多次尝试。
出于“测试”数据集的目的,变量“DIAG”已连续列出。在实际数据集中,每个“DIAG”由两个变量分隔。如果将这些变量连续列出的解决方案要简单得多,那当然可以做到。
我非常感谢任何关于 SPSS 中可能是一个非常基本的语法问题的输入/指导。
【问题讨论】:
标签: string loops syntax macros spss