В чем разница между SAS ARRAY и SAS IF-THEN? - PullRequest
0 голосов
/ 05 октября 2019

У меня есть таблица с результатами экзаменов студентов;Возможные варианты: имя, оценка1, оценка2, оценка3 и пол везде, где есть пропущенное значение в одной из оценок, установлено значение 999. Я хочу преобразовать все 999 в пропущенные (.) значения. Я понял, что есть 2 основных способа, и я хотел бы знать ОСНОВНУЮ разницу между ними.

Как написано выше, оба дают один и тот же результат: первый:

data try ;
    set mis_999 ;
        if score1 = 999 then score1 = . ;
        if score2 = 999 then score2 = . ;
        if score3 = 999 then score3 = . ;
run ;

второй (с массивом):

data array_try ;
    set mis_999 ;
    array try2{*} score1-score3 ;
    do i=1 to dim(try2) ;
    if try2(i) = 999 then try2(i) = . ;
    end ;
run ;

1 Ответ

1 голос
/ 06 октября 2019

В этом примере основное отличие состоит в том, что код, использующий массив, легче расширить до большего количества переменных.

В первом примере у вас есть то, что называется кодом обоев, много кода, который повторяет один и тот же шаблон. Если у вас есть 500 переменных вместо 3, вам нужно написать 500 операторов. Но с помощью метода массива вам просто нужно изменить список переменных в определении массива. Цикл DO будет таким же.

...