Определение вектора с различной длиной - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь выяснить, как написать векторную команду, допускающую переменную длину.

Предположим, у меня есть переменные с Item1 по Item7. Я могу написать векторное утверждение ...

ВЕКТОР Item = Item1 to Item7.

В другой ситуации у меня есть 20 предметов вместо 7 (то есть, от 1 до 20), и, предположим, у меня есть переменная с именем num, которая содержит число 20.

Как написать оператор Vector общего назначения, который, возможно, может использовать concat для объединения "Item" и значения num в качестве суффикса?

Спасибо!

1 Ответ

0 голосов
/ 27 мая 2018

Предполагается, что переменная num имеет одинаковое значение во всех строках.

Сначала я создаю небольшой пример данных для работы. Для примера у меня будет синтаксис создать вектор с 13 переменными.

data list list/num item1 to item20 (21f5).
begin data
13 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
13 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
13 2 3 4 5 4 5 6 7 6 7 8 9 1 2 3 4 5 6 7 8
end data.

Теперь, чтобы создать вектор, я сначала создаю текст команды в новой переменной:

string VecCom (a50).
compute VecCom=concat("VECTOR Item = Item1 to Item", ltrim(string(num,f5)), ".").

Теперь я записываю его в новый синтаксис и запускаю:

temp.
select if $casenum=1.
write out="somePath\create vector with specific length.sps" /VecCom.
exe.
insert file="somePath\create vector with specific length.sps".

Вектор теперь определен - вы можете видеть это так:

display vectors.
...