Использовать имя переменной для расчета в SAS - PullRequest
1 голос
/ 14 марта 2012

У меня есть набор данных SAS, который выглядит следующим образом:

var  _12  _41  _17
12      .   .   .
41      .   .   .
17      .   .   .

Таким образом, для каждого var есть столбец с именем _var.

Я хочу использовать массив или макрос для заполнения всех пропущенных значений произведением строки и столбца:

     _12  _41  _17
12  144   492  204
41  492  1681  697
17  204   697  289

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

1 Ответ

5 голосов
/ 14 марта 2012

Поскольку все переменные (кроме var) начинаются с подчеркивания, их легко ссылаться в массиве. Затем вы можете использовать функции INPUT, COMPRESS и VNAME, чтобы извлечь число и выполнить вычисление в одной строке! Вот код.

    data have;
    input var  _12  _41  _17;
    cards;
    12  .   .   .
    41  .   .   .
    17  .   .   .
    ;
    run;

    data want;
    set have;
    array nums{*} _: ;
    do i=1 to dim(nums);
        nums{i}=var*input(compress(vname(nums{i}),"_"),best12.);
    end;
    drop i;
    run;
...