Как подсчитать количество наблюдений в таблице SAS?

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

    ID       score
-------------------
    01         1
    02         3
    03         4
    04         2

есть ли способ сохранить количество наблюдений в этой таблице используя только сортировку PROC и шаг данных? Я хочу сохранить значение в окне журнала, которое похоже на "hold N=4" в сценарии журнала SAS.

извините за мое непрофессиональное описание. Спасибо заранее.

3 ответов


использовать nobs= в инструкции set.

data _null_;
set xyz nobs=nobs;
put "HOLD N=" nobs ;
stop;
run;

как новый пользователь SAS,Нобса может быть все, что вам нужно. Однако по мере того, как ваши навыки кодирования возрастают, вы можете оказаться в ситуациях, когда это не подходит. The Нобса на SET утверждение может работать не во всех случаях. Возвращаемое значение будет числом физических наблюдений в наборе данных, включая любые наблюдения, которые могли быть удалены на месте. Он также может не работать с определенными представлениями (особенно представлениями подключено к внешним базам данных).

"самый безопасный" способ найти количество неотделенных наблюдений в наборе данных или представлении-использовать PROC SQL и фактически подсчитывают их, помещая результат в переменную макроса. Например, предположим, что у вас есть объект данных с именем HAVE:

proc sql noprint;
   select count(*) into : nobs
   from WORK.HAVE;
quit;
%put 'Obs in data set:' &nobs;

Примечание это работает, если есть набор данных или представления.

кроме того, если объект является просто набором данных, можно использовать представление словаря таблиц SAS для возврата NLOBS атрибут, который имеет количество "логических" наблюдений (т. е. учитывает любые удаленные строки):

proc sql noprint;
   select nlobs into : nobs
   from dictionary.tables
   where libname='WORK'
    and memname='HAVE';
quit;
%put 'Obs in data set:' &nobs;

Это, безусловно, будет более эффективным, если ваш набор данных SAS очень большой. Я часто задавался вопросом, почему SAS не делает этого NLOBS значение доступно в качестве опции на SET утверждение, но я уверен, что есть причины.

proc SQL, представления, переменные макросов и удаленные наблюдения на месте могут быть новыми для вас прямо сейчас, но как вы продвигаетесь с вашим SAS обучения вы обязаны начать использовать их.


сведения null;

набор sashelp.таблицы vtable;

где libname= "работа" и memname= "DS1";

вызов symput ("count_obs", nlobs);

"выполнить";

%поместите obs в ds1: & count_obs;