Как перебрать столбцы и создать новый столбец на основе данных существующего? - PullRequest
0 голосов
/ 06 октября 2018

Я новичок в SAS.У меня есть таблица:

столбцы:

column1 column2 column3 

со значениями:

row1: val1.1  val2.1  val3.1

row2: val1.2  val2.2  val3.2

row3: val1.3  val2.3  val3.3

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

столбцы:

column1 column1_proc column2 column2_proc column3 column3_proc

row1: val1.1  val1.1.v     val2.1  val2.1v      val3.1  val3.1v

row2:
val1.2  val1.2.v     val2.2  val2.2v      val3.2  val3.2v

row3:
val1.3  val1.3.v     val2.3  val2.3v      val3.3  val3.3v

Существуют ли некоторые функции на языке SAS?

1 Ответ

0 голосов
/ 06 октября 2018

Чтобы создать новую переменную, вам просто нужно присвоить ей значение.Поскольку вы не объяснили, какое значение вы хотите, давайте используем простой пример, в два раза превышающий исходное значение.

data want;
  set have;
  column_proc1 = 2 * column1 ;
run;

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

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

data want;
  set have;
  array old column1 - column3 ;
  array new column_proc1 - column_proc3;
  do i=1 to dim(old);
    new(i) = 2 * old(i) ;
  end;
run;
...