Подставляя значения переменной в sas - PullRequest
0 голосов
/ 03 июля 2011

В моем файле sas есть столбец age, а другой столбец - finalage.Я хочу заменить значения в столбце age значениями в столбце agefinal только для одного идентификатора (то есть 5)

Я использовал следующий код:

Data temp;
set temp;
if ID = 5;
then age = agefinal;
run;

Я не смог заменитьценности.Значения в столбце возраста не изменились.Я попытался запустить этот код, чтобы проверить длину символов в значениях, поскольку тип символа числовой для обоих столбцов.

Код:

Proc contents data = temp;
tables age agefinal;
run;

Вывод, который я получил, был:

age : character length 3.
agefinal: character length $3

Буду признателен за ваши предложения.

Ответы [ 3 ]

1 голос
/ 03 июля 2011

Попробуйте удалить точку с запятой в конце оператора if. Прямо сейчас вы удаляете все записи, где идентификатор не равен пяти.

0 голосов
/ 05 июля 2011

Приведенный вами код работает с ОШИБКОЙ, удалите дополнительную точку с запятой, и это может решить вашу проблему:

/* ORIGINAL */
Data temp;
set temp;
if ID = 5;
then age = agefinal;
run;

/* CORRECTED */
Data temp;
set temp;
if ID = 5 /* REMOVED SEMICOLON */
then age = agefinal;
run;

Приветствие Rob

0 голосов
/ 04 июля 2011

Попробуйте установить одинаковые форматы

data temp;
 modify temp;
 format age agefinal $3.;
 run;

и посмотрите, позволит ли вам выполнить замену.

...