Как рассчитать диапазон переменной в SAS? - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть таблица в SAS, в которой есть переменная, скажем, X. Я хочу знать только диапазон X, я использовал PROC UNIVARIATE, но она выдает много другой информации.Я пытался использовать функцию RANGE следующим образом, но не дает никакого результата.Пожалуйста, помогите!

DATA DATASET2;
SET DATASET1;
R=RANGE(X);
KEEP R;
RUN;
PROC PRINT DATASET2;

RUN;

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Вы также можете использовать функцию диапазона в proc sql, где она работает со столбцами, а не со строками:

proc sql;
  select range(age) from sashelp.class;
quit;

Это также возможно на шаге данных, если вам не нравится sql:

data _null_;
  set sashelp.class end = eof;
  retain min_age max_age;
  min_age = min(age,min_age);
  max_age = max(age,max_age);
  if eof then do;
    range = max_age - min_age;
    put range= min_age= max_age=;
  end;
run;

Или эквивалентно:

data _null_;
  do until (eof);
    set sashelp.class end = eof;
    min_age = min(age,min_age);
    max_age = max(age,max_age);
  end;
  range = max_age - min_age;
  put range= min_age= max_age=;
run;
0 голосов
/ 23 сентября 2018

функция диапазона предназначена для строки, и вы попытались использовать столбец, поэтому, возможно, у вас есть нули.Функция диапазона может использоваться следующим образом.

  R= range(x,y,x);

Для внутри столбца необходимо использовать средства proc.

 proc means data=sashelp.class range maxdec=2;
  var age;
  run;

или использовать proc sql, как показано ниже.

 proc sql;
select max(age) -min(age) as range
from sashelp.class;
...