2015-08-03 1 views
1

Я использую SPSS 20. В моем наборе данных есть список строковых переменных, которые я хочу перекодировать в числовые. Первоначально я хотел, чтобы они были перекодированы в себя. Я понимаю, что это невозможно, поскольку SPSS проходит через набор данных и одна переменная может иметь только один тип за раз. Поэтому я хочу, чтобы они были перекодированы в новые переменные, но с суффиксом _rec.SPSS REPEAT: Как использовать переменную stand-in как часть имени переменной?

DO REPEAT var = var_1 var_2 ... var_n. 
    RECODE var (CONVERT) INTO var_rec. 
END REPEAT. 

Но это создает только один новую переменную var_rec не несколько новых.

Я также пытался программировать обходной путь:

COMPUTE Job_2 
STRING Job(A20) 
    DO REPEAT var = var_1 var_2 ... var_n. 
COMPUTE var = Job. 
RECODE Job (CONVERT) INTO Job_2. 
DELETE VARIABLES var. 
COMPUTE var = Job_2. 
END REPEAT. 

Но это не работает, потому что DELETE VARIABLES не может быть использован в течение DO REPEAT цикла.

Так что я вернулся к своему первоначальному вопросу.

ответ

0

Вы говорите, что они (строковые переменные) не может быть перекодировано в себя, но они могут с помощью ALTER TYPE

ALTER TYPE var_1 var_2 var_3 (F8.2). 

Где F8.2 является числовой переменной шириной 8 и 2 знака после запятой.

Вы можете использовать DO REPEAT с несколько дежурным в списке переменных, как следующее:

DO REPEAT Old = var_1 var_2 var_3 
    /New = var1_rec var2_rec var3_rec. 
    RECODE Old (CONVERT) INTO New. 
END REPEAT PRINT. 

расширявшиеся из это эквивалентно:

RECODE var_1 (CONVERT) into var1_rec. 
RECODE var_2 (CONVERT) into var2_rec. 
RECODE var_3 (CONVERT) into var3_rec. 

Но если вы собираетесь это сделать то вы можете сделать это непосредственно в команде RECODE, примерно так:

RECODE var_1 var_2 var_3 (CONVERT) INTO var1_rec var2_rec var3_rec. 

Оба метода предполагают, что исходными переменными являются все строковые переменные (любой и различной ширины).

Обратите внимание на то, что именно делает функция CONVERT, а именно, взятие строковой переменной (содержащей числовые значения, хранящиеся в виде строки) и преобразование ее в переменную числового формата. Таким образом, входная переменная всегда является строкой и выводит числовую.

+0

К вашему первому предложению: не будет ли SPSS проходить через каждый переменный список и таким образом перекодировать var_1, var_2 и va3_3 в var_1_rec (например)? Только var_3 будет перекодирован в конце. К вашему предложению seccond: Для этого RECODE требует, чтобы все переменные имели один и тот же тип и ширину. – Caspar

+0

Обновлено сообщение, чтобы помочь. –

+0

Большое спасибо. Я не знал, что DO REPEAT работает таким образом. – Caspar

Смежные вопросы