case - 在 SPSS 中使用宏选择个案

标签 case spss

我正在尝试选择具有特定诊断代码的病例。每个患者的诊断代码存储在多个列 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/

相关文章:

android - 如何在不连接设备或模拟器的情况下运行 Android 测试用例?

sql - ORACLE-CASE 需要 INTO?

php - Mysql 2跨 TableView 不将1=1关系转化为一个 View

excel - SPSS:按特定序列出现过滤数据集

mysql - MySQL 中的重复 Case 语句

java - JOOQ 中 CASE WHEN 子句的非确定性数量

python - SPSS 中的 matplotlib 图

debugging - SPSS宏从变量打开CSV

excel - 在 Excel 的列中搜索字母字符

spss - 使用 SYSMIS 计算变量