String 在字符串中查找数字并创建新的true/false变量
我有一个两个字符串变量DiagnosisPrimary&diagnosissother,它将诊断编码为数值并用“~”表示。 所以第一个人在第一次就诊时被诊断为“20”,第二次就诊时什么也没有String 在字符串中查找数字并创建新的true/false变量,string,variables,syntax,spss,String,Variables,Syntax,Spss,我有一个两个字符串变量DiagnosisPrimary&diagnosissother,它将诊断编码为数值并用“~”表示。 所以第一个人在第一次就诊时被诊断为“20”,第二次就诊时什么也没有 DiagnosisPrimary 20~ 12~~~ 20~20~ 12~12~ 12~~ ~~~~~ 12~12 如果20代表被诊断患有抑郁症,我想看看字符串中是否有“20”。基本上,在他们的任何一次探访中,找出谁被诊断为抑郁症。过去我使用过下面的公式,但现在数据是数字和文本的混合体,不再有效 COMP
DiagnosisPrimary
20~
12~~~
20~20~
12~12~
12~~
~~~~~
12~12
如果20代表被诊断患有抑郁症,我想看看字符串中是否有“20”。基本上,在他们的任何一次探访中,找出谁被诊断为抑郁症。过去我使用过下面的公式,但现在数据是数字和文本的混合体,不再有效
COMPUTE Dx_Depression =ANY(20, DiagnosisPrimary) OR ANY(20, DiagnosisOther).
我想创建一个带有真/假响应的新变量
非常感谢任何帮助 应该使用CHAR.INDEX函数,该函数返回字符串在另一个字符串中的位置,如果子字符串不存在,则返回0
COMPUTE Dx_Depression = (CHAR.INDEX(DiagnosisPrimary, '~20~') >0) or
(CHAR.INDEX(DiagnosisPrimary, '~20')=char.len(DiagnosisPrimary)-3) or
(CHAR.INDEX(DiagnosisPrimary, '20~')=1) or
(CHAR.INDEX(DiagnosisOthers, '~20~') >0) or
(CHAR.INDEX(DiagnosisOthers, '~20')=char.len(DiagnosisOthers)-3) or
(CHAR.INDEX(DiagnosisOthers, '20~')=1)
只是一个想法——如果诊断值有可能是200或120,那么它将被错误地计算为20。为了避免这一点,我们需要在文本的开头或“~(20)”的中间寻找“20”。所以:计算Dx_Depression=CHAR.indexdiagnosisspry,'20~'=1或CHAR.indexdiagnosissother,'20~'=1或CHAR.indexdiagnosisspry,'20~'>1或CHAR.indexdiagnosissother,'20~'>1。@eli-k-这是一个非常重要和正确的注释@Erin如果回答了您的问题,请将答案标记为已接受;这样,它也可以帮助其他人