GOOGLE ADS

суббота, 9 апреля 2022 г.

Выполнять IF и Compute в макросах spss

У меня есть следующий синтаксис 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.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...