SAS вставка только в массив (пример), первая строка из набора данных - PullRequest
0 голосов
/ 22 марта 2019

У меня есть проблема. Мне нужно вставить в массив только (пример) первый массив, лучшее поле за полем. Как мне это сделать? Буду благодарен, если вы также укажете, как вставлять столбец за столбцом (я смогу загрузить выбранные столбцы в будущем).

data have;
infile DATALINES dsd missover;
input varr1 varr2 varr3;
CARDS;
1, 2, 3
2, 3, 4 
5, 4
4, 3
9, 4, 1
6,
;run;

data want;
   set have;
    array L[3] _temporary_ ;

if _n_ = 1 then 
    do;
        do i = 1 to 3;
            %LET j = i;
            L[i] = varr&i;  /*in this place I have problem*/
            put L[i];
        end;
    end;
run;

1 Ответ

1 голос
/ 22 марта 2019

Вам не нужен макрос, и вы не знаете, зачем вам нужен временный массив L.

Оператор массива может использоваться для организации переменных, чтобы к ним можно было обращаться массивом. Цикл по массиву переменных, чтобы скопировать значения во временный массив.

Элементы временного массива недоступны для вывода, а не часть нормального поведения неявного вектора программных данных (PDV), которое приводит к сбросу переменных в отсутствующие.

data want;
  set have;
  array V varr1-varr3;
  array L[3] _temporary_;

  * save first rows values in temporary array for use in other rows;
  if _n_ = 1 then 
    do index = 1 to dim(V);
      L[index] = V[index];
    end;

  * … for example … ;

  array delta_from_1st [3];  * array statement implicitly creates three new variables that become part of PDV and get output;
  do index = 1 to dim(V);
    delta_from_1st[index] = V[index] - L[index];
  end;      
run;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...