Мои данные содержат странно введенные данные. Мне нужно разбить строку, которая может состоять из 1-2-значного возраста или двух возрастов, разделенных запятой или периодом. Запятая обозначает постоянное воздействие, а период представляет собой отдельный инцидент.SPSS: как закодировать макрос (цикл и т. Д.), Который использует несколько «вычислений» (Char.Substr и Char.Index) для нескольких переменных. (5-6 выходов на Var (29))
У меня есть базовый код для применения к одной переменной, но я просто инвестирую 2-3 часа, пытаясь автоматизировать, поэтому мы можем изменить его на одну строку, а не на код в 29 раз отдельно. Подумал, что это будет легко, но я возился с петлями и «!». слишком долго на этом этапе. Любые рекомендации будут оценены.
Если это помогает, существующий код находится ниже.
**Split Ages and Determine Continuous or Intermittent.
*ID position of comma and period.
Compute Period = CHAR.INDEX (Var, ".").
Execute.
Compute Comma = CHAR.INDEX (Var, ",").
Execute.
*Seperate ages into seperate variables.
STRING Age1(A2) Age2(A2).
DO IF (Comma = 2 or Period=2).
COMPUTE Age1 = CHAR.SUBSTR (Var,1,1).
COMPUTE Age2 = CHAR.SUBSTR (Var,3).
ELSE IF (Comma = 3 or Period=3).
COMPUTE Age1 = CHAR.SUBSTR (Var,1,2).
COMPUTE Age2 = CHAR.SUBSTR (Var,4).
ELSE IF (Comma = 0 and Period = .00).
COMPUTE Age1 = Var.
END IF.
*Convert String to Numeric.
alter type Age1(f2).
alter type Age2(f2).
execute.
*Cont or Int.
DO IF (Period >0).
Compute Multiple = 1.
END IF.
DO IF (Comma >0).
Compute Duration = Age2 - Age1.
END IF.
EXECUTE.
Это не так уж плохо - вы можете устранить все эти операторы выполнения и использовать переменные с нуля. Существует не так много, чтобы выиграть от циклов или повторить.Если вы хотите сделать макрос, все, что вам нужно сделать, это пройти через максимум три параметра - строку, которую вы хотите разобрать, и две выходные переменные. –