Создание списка всех переменных, кроме некоторых конкретных - PullRequest
0 голосов
/ 06 сентября 2018

У меня есть несколько spss-файлов с несколькими переменными (col1, col2, ... col150). Я пытаюсь создать общий код для реструктуризации файла с помощью VARSTOCVASES. в этом мне нужно СОХРАНИТЬ 3 переменные (col1, col34, col66), они общие для всех файлов, но остальные переменные разные. Я знаю нормальный способ, которым мы добавим все оставшиеся переменные в подкоманду MAKE. что я добавляю ниже

VARSTOCVASES   
/MAKE  VariableName1 FROM Col1 Col2 Col3 ....etc(except 3)
/INDEX=VariableName(VariableName1) 
/KEEP=Col1 Col34 Col66

вместо этого я хочу создать список переменных с помощью команды (SPSSINC SELECT VARIABLES). Я получил эту идею, но у меня нет примеров для этого. Этот запрос Select должен быть небольшим, что означает, что этот запрос должен динамически выберите все переменные, кроме этих 3 (Col1 Col34 Col66), потому что у меня разные файлы SPSS, и что эти 3 (Col1 Col34 Col66) переменные одинаковы, но остальные отличаются и все содержат различное количество переменных.

Если у меня есть список переменных (динамически генерируется путем исключения 3), то я могу указать это в подпрограмме MAKE sub. Пожалуйста, помогите мне.

1 Ответ

0 голосов
/ 06 сентября 2018

Один из способов - переименовать эти конкретные столбцы, а затем выбрать все другие переменные, начинающиеся с «col»:

rename variables (col1 col34 col66=var1 var34 var66).
spssinc select variables MACRONAME = "!allCOL" 
   /PROPERTIES PATTERN="Col*".

Теперь все переменные с именами, начинающимися с "Col", находятся в списке с именем "! AllCOL", который вы можете использовать в своем синтаксисе, например:

VARSTOCVASES   
/MAKE VariableName1 FROM !allCOL /INDEX=VariableName(VariableName1) .

РЕДАКТИРОВАТЬ: другое решение Приведенное выше решение действительно только в том случае, если для всех переменных, которые вы хотите включить в список, существует постоянный шаблон. Если это не так, это следующее решение позволяет вам назвать переменные, которые вам не нужны, и поместить все остальные в список.

* first we define a new attribute in which we mark the 
    variables we don't want on the list.

VARIABLE ATTRIBUTE VARIABLES=Car_Model_1 Car_Model_2 
     ATTRIBUTE=IncludeInMake ("no").

* now we create the list, leaving out the unwanted variables.

spssinc select variables MACRONAME = "!forMake"  
    /ATTRVALUES NAME=IncludeInMake VALUE="".  
VARSTOCVASES /MAKE Val FROM !forMake /INDEX=var(val) .
...