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

#sas

#sas

Вопрос:

В 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. Вы определенно можете обработать это в SAS (и Крис Лонг предлагает хорошее решение ниже), но было бы разумно исправить порядок в исходной системе, где возникает проблема.

Ответ №1:

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

 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() функции подавляют обычные предупреждения, когда значение не может быть обработано.