我正在尝试选择具有特定诊断代码的病例。每个患者的诊断代码存储在多个列 DX1、DX2、DX3、DX4 ......等中。每个患者可能有多个诊断。 如果 ICD 代码 75673 在任何诊断列中匹配,则意味着该病例(患者)具有特定诊断 - 在这种情况下,腹裂和 GastroID 应记录为 1,否则 GastroID 应为 0。
有时 ICD 代码在范围内,每个诊断列都需要根据范围内的 ICD 代码之一进行检查。 例如,腹壁缺陷由 7567 到 75679 之间的代码组成。
我试着循环如下。它创建列名称 GastroID 但输出不是“1”或“0”。我可能做错了什么?
DEFINE FINDCASES (ICD=!CHAREND("/") /
DX=!CMDEND).
!DO !I !IN (!ICD)
!DO !J !IN (!DX)
!IF (!J = !I) !THEN COMPUTE GastroID=1
!ELSE COMPUTE GastroID=0
!IFEND
!DOEND
!DOEND
!ENDDEFINE.
FINDCASES ICD = '75673' /DX=DX1 DX2 DX3 DX4.
最佳答案
这是一个循环,它使用@horace_vr 回答中的基本思想但解决了多个条件:
compute GastroID=0.
do repeat CodNum=7567 75679 75673.
if GastroID=0 GastroID=any(CodNum, DX1 to DX4).
end repeat.
注意 - 如果变量 DX1 到 DX4 在文件中不连续,则不能在语法中使用 to
,但必须分别命名它们。另外,正如@horace_vr 所说,如果这些变量是文本而不是数字,请将数字放在引号中。
现在,如果您有许多像这样的代码组,您可以为每个代码组创建一个 do repeat
循环。或者你可以使用一个循环(虽然这可能有点困惑):
numeric GastroID grp2ID grp3ID (f1).
do repeat CodNum=7567 75679 75673 111 112 113 456 4567 4566
/NewVar=GastroID GastroID GastroID grp2ID grp2ID grp2ID grp3ID grp3ID grp3ID.
if missing(NewVar) or NewVar=0 NewVar=any(CodNum, DX1 to DX4).
end repeat.
关于case - 在 SPSS 中使用宏选择个案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46258104/