У меня есть следующий синтаксис spss:
DO IF SYSMIS(V5).
COMPUTE V5 = LAG(V5).
END IF.
EXE.
Это работает нормально. Однако я хотел бы повторить тот же процесс для нескольких переменных. Я пытался написать макрос для этого, но я продолжаю получать сообщения об ошибках. Это была моя попытка:
define filldown (!positional !cmdend).
do if sysmis(!1).
compute !1 = lag (!1).
end if.
execute.
!enddefine.
!filldown V5 age wt htm.
Как написать работающий макрос (я новичок в макросах)?
Решение проблемы
Решение @horace_vr do repeat
определенно подходит для этого случая. Нижеследующее предназначено только для того, чтобы узнать кое-что о макросах, пока вы этим занимаетесь.
Прежде всего, вы можете использовать свой текущий макрос для каждой переменной отдельно, но вам нужно использовать исходный вызов макроса (не добавляйте "!"), поэтому:
filldown V5.
filldown age.
....
Но, конечно, вы можете создать цикл внутри макроса, например:
define filldown (!positional !cmdend).
!do !vr !in (!1)
do if sysmis(!vr).
compute !vr = lag (!vr).
end if.
execute.
!doend
!enddefine.
Теперь вы можете использовать вызов макроса один раз с полным списком:
filldown V5 age wt htm.
Комментариев нет:
Отправить комментарий