использовать переменную набора данных для ссылки на массивы - PullRequest
0 голосов
/ 04 декабря 2018

возможно ли использовать столбец набора данных (символьные переменные) в шаге данных для ссылки на массивы с тем же именем, что и «имена символов» в столбце в шаге данных.

Пример:

data somedataset; 
  input id $ number; 
  DATALINES; 
dk33 50
dk34 100
;
run;

data test;
set somedataset;
ARRAY dk33{3} x1-x3 (10,2,3) ;
ARRAY dk34{3} y1-y3 (4,2,6)
res = id[1] + id[2] + id[3] + number  #what i want to do#
run;

Как видите, я хочу использовать столбец "id" для ссылки на массив, который я объявил в шаге данных.Ясно, что id - это символ, поэтому он не может ссылаться на массив.Однако есть ли какое-либо решение для этого?пожалуйста, помогите ...

1 Ответ

0 голосов
/ 04 декабря 2018

Нет.Вы можете преобразовать свою символьную переменную в индекс в двумерный массив.

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

i=input(substr(in,3),32.)-32;

Вот способ использования списка имен дляпоиск, какой индекс использовать.

data test;
  set somedataset;
  array names (2) $32 _temporary_ ('dk33' 'dk34') ;
  array lookup (2,3) _temporary_ (10 2 3 , 4 2 6) ;
  i=whichc(id, of names(*) );
  res = lookup(i,1) + lookup(i,2) + lookup(i,3) + number ;
run;

Результат:

Obs     id     number    i    res

 1     dk33       50     1     65
 2     dk34      100     2    112
...