2016-05-11 2 views
1

Я хочу, чтобы иметь возможность прокручивать ряд переменных с одинаковым именем в SPSS, просто изменяя несколько параметров. Например, у меня есть переменныеПеремещение по именам динамических переменных

q7_22_react_a q7_22_react_b q7_22_react_c q7_2 _react_a q7_2 _react_b q7_2 _react_c

Обратите внимание на нумерацию и буквенные изменения. Я пробовал это, но он не разбирал «7_22» очень хорошо:

define !test (numbers= !chardend('/')/letters= !cmdend). 
!do !i !in (!numbers) 
    frequencies variables !concat(q,!i,'_react_',!letters) 
!doend 
!enddefine. 

!test numbers= 7_22/letters= a. 

Мысли?

+0

Nice one! не сталкивались с этим раньше ... Я еще проверил и обнаружил, что токены разрываются, если они начинаются с числа или с подчеркиванием. –

ответ

1

Я не знаю, есть ли реальное решение, но я могу придумать пару обходных решений. Идея в том, чтобы предотвратить маркер от того, чтобы разделить - либо, начав его с письмом:

define !test2 (numbers= !chardend('/')/letters= !cmdend). 
!do !i !in (!numbers) 
    frequencies variables !concat(!i,'_react_',!letters) 
!doend 
!enddefine. 

!test2 numbers= q7_22/letters= a. 

или добавления цитаты:

define !test3 (numbers= !chardend('/')/letters= !cmdend). 
!do !i !in (!numbers) 
    frequencies variables !concat('q',!unquote(!i),'_react_',!letters) 
!doend 
!enddefine. 

!test3 numbers= '7_22'/letters= a. 
+0

Спасибо. Я пробовал и добился успеха в аналогичном обходном пути с соглашениями об именах. Я наткнулся на старый поток IBM, и похоже, когда в списках макросов есть символы подчеркивания, SPSS отделяет его как разные переменные. Настоящая боль, но разрешимая. – vashts85

1

Вот простое решение.

SPSSINC ВЫБЕРИТЕ ПЕРЕМЕННЫЕ МАКРОНАМЫ = "! ВЗАИМОДЕЙСТВИЕ" /PROPERTIES PATTERN = ". * Response".

частота регулировка.

Образец - это регулярное выражение - здесь любое имя, которое включает в себя «реагировать». SPSSINC SELECT VARIABLES - это команда расширения, обычно устанавливаемая со статистикой в ​​последних версиях или доступная с сайта сообщества SPSS. Он имеет диалоговое окно, которое появляется в меню Утилиты

1
define !test (numbers= !chardend('/')/letters= !cmdend). 
    !do !i !in (!numbers) 
     frequencies variables !concat(q,!UNQUOTE(!i),'_react_',!letters). 
    !doend 
!enddefine. 
SET MPRINT ON. 
!test numbers= '7_22'/letters= a. 

Resulting Syntax ;-))) 
frequencies variables q7_22_react_a. 
Смежные вопросы