Я хочу использовать функцию «if ~ else if» для выполнения некоторых инструкций, если первые данные являются символьными, и для выполнения других, если они являются числами - PullRequest
0 голосов
/ 27 марта 2019

В SAS я хочу использовать функцию 'if ~ else if' для выполнения некоторых инструкций, если первые данные являются символами, и для выполнения других инструкций, если они являются числами.

Я пытался использовать 'ifоператор ~ else if ', но я не знаю, как указать условный оператор.


В этом коде

data pr1;
input ~~~~
put profname$ course;
cards;
LEE 22
15 PARK
;
run;

Я хочу показать это.

profname course
 LEE    22  
 PARK    15

Что я могу вставить в '~~~' ??

1 Ответ

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

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

data pr1 (keep = profname course);

  * Declare PROFNAME as character and COURSE as numeric;
  length profname $ 20 course 8;

  * Read in two columns of data;
  input col1 $ col2 $

  if input(col1, ??best.) = . then do;
    * If COL1 cannot be converted to a number, assume it is a name;
    profname = col1;
    course = input(col2, ??best.);
  end; else do;
    * Otherwise assume COL2 is the name;
    profname = col2;
    course = input(col1, ??best.);
  end;

  cards;
LEE 22
15 PARK
  ;
run;

Модификаторы ?? в функции INPUT() подавляют обычные предупреждения, когда значение не может быть обработано.

...