Как процитировать переменную массива в SAS - PullRequest
0 голосов
/ 22 мая 2018

У меня есть набор данных INPUT с переменной с именем color с несколькими типами:

obs  color
1     red
2     red
3     yellow
4     blue
...

Теперь я хочу создать флаги для каждого типа цвета:

DATA COLOR; SET INPUT;
ARRAY TYPES [3] RED YELLOW BLUE;
FOR I = 1 TO DIM(TYPES) DO; 
  IF COLOR = %unquote(%str(%')TYPES[I].%str(%')) THEN TYPE[I] = 1; 
  ELSE TYPE[I] = 0; 
END;
RUN;

Итакэто не работает хорошо, используя этот способ для добавления кавычек для переменной массива.Поскольку мне нужно будет создать одно и то же имя флага для каждого типа цвета, я подумал, что мне будет проще писать как массив.Пожалуйста, дайте мне знать, если вы знаете, как добавить кавычки для переменных массива.Так что мне не нужно будет писать много строк IF IFATEMENTS.Когда есть слишком много типов цветов.Благодарю.

1 Ответ

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

Массивы кажутся излишними для вашего примера.Если вы хотите создать двоичные переменные, присвойте переменным результаты логических выражений.

data want;
  set have ;
  red = color='red';
  blue = color='blue';
  yellow = color='yellow';
run;

Чтобы ваша идея ARRAY работала, вам нужно использовать функцию VNAME (), чтобы найти ИМЯпеременная, которая соответствует элементу массива.

data want ;
  set have ;
  array types red blue yellow ;
  do i=1 to dim(types);
    types(i)=upcase(color)=upcase(vname(types(i)));
  end;
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...