SPSS- присвоение одной переменной нескольких числовых кодов

Я пытаюсь присвоить несколько кодов существующим переменным. Я использую приведенный ниже синтаксис, но он назначит только первый введенный код для этого hosp.id.number.

Пример синтаксиса:

 Do if (hosp.id.number=9037) or (hosp.id.number=1058) or      (hosp.id.number=11256).
 Compute role_EM_communication=10.
 Else if (hosp.id.number=9037. 
 Compute role_EM_communication=11.
 End if.
 Execute.

hosp.id.number нужно кодировать 10 и 11, но он будет кодировать только 10. В любом случае перефразировать так, чтобы SPSS принимал 2 или более кодов для такой переменной, как hosp.id.number?


person Lauren    schedule 22.01.2015    source источник
comment
Во-первых, в строке Else if (hosp.id.number=9037. отсутствует закрывающая скобка. Во-вторых, ваш вопрос не имеет смысла. Более того, логика, разрешающая двойное присвоение одной переменной (role_EM_communication), не имеет смысла. И, наконец, ELSE IF никогда не будет выполнено, потому что то же самое условие будет истинным в DO IF перед ним.   -  person Jignesh Sutar    schedule 22.01.2015
comment
Закрывающие скобки были удалены случайно, когда я копировал/вставлял синтаксис. Синтаксис работал до некоторой степени. Он назначает все соответствующие коды, только он будет назначать только один код для каждого идентификатора хоста - когда мне нужно назначить 1-3 кода для каждого идентификатора в зависимости от данных (по мере необходимости). Выполняется ли все остальное, если еще не назначен идентификатор hosp? Есть ли у вас какие-либо предложения о том, как это сделать с помощью синтаксиса? Мне нужно назначить несколько кодов идентификатора hosp в наборе данных и подсчитать эти несколько кодов в таблице частот.   -  person Lauren    schedule 22.01.2015


Ответы (1)


Ваша переменная role_EM_communication — это одна переменная, но из того, что вы говорите, я думаю, вам нужно, чтобы она была набором (для одной и той же записи она может принимать более одного кода). Поэтому вам нужно создать n переменных с именами от role_EM_communication_1 до role_EM_communication_n, где n — максимальное количество кодов, которое, по вашим оценкам, возможно для одной записи.

Для вашего примера это будет выглядеть так:

создайте 2 переменные:

vector role_EM_communication_ (2, f2.0).

сделать первую перекодировку:

if any(hosp.id.number,9037,1058,11256) role_EM_communication_1=10.

очень важно - выполнить перекодировку

exe.

проверьте, есть ли данные в первой переменной, и заполните вторую переменную, если она верна:

if miss(role_EM_communication_1) and any(hosp.id.number,9037) role_EM_communication_1=11.
if ~miss(role_EM_communication_1) and any(hosp.id.number,9037) role_EM_communication_2=11.
exe.
person horace_vr    schedule 17.10.2015