2014-04-07 2 views
2

SAS에서 상위 10 %로 출력되는 관측 수를 어떻게 제한합니까? 나는 obs = function에 대해 알고 있지만, obs = 만드는 방법을 알아낼 수 없었습니다.SAS에서 상위 10 % 출력

미리 감사드립니다.

+0

어떤 통계로 상위 10 %? 레코드의 처음 10 % 만 레코드 순서에 따라 또는 다른 메트릭에 의해 간단히? – Joe

+0

@Joe가 맞습니다. 질문이 모호합니다. 내 가정은 처음 10 %의 관측치를 출력하려고하지만 데이터 단계 또는 프로 시저 (예 : proc print)를 사용하여이 작업을 수행하고 있는지 여부를 알 수 없다는 것입니다 – Longfish

답변

1

내가 아는 한 당신이 묻는 것을 직접 할 방법이 없다. 당신은 꽤 쉽게 이것을 할 수있는 매크로를 작성할 수 있습니다.

PROC PRINT에서 처음 10 %의 레코드를 보려고한다고 가정하면 다음과 같이 할 수 있습니다.

%macro top10pct(lib=WORK,dataset=); 
proc sql noprint; 
select max(ceil(0.1*nlobs)) into :_nobs 
from dictionary.tables 
where upcase(libname)=upcase("&lib.") and upcase(memname)=upcase("&dataset."); 
quit; 

proc print data=&lib..&dataset.(obs=&_nobs.); 
run; 
%mend top10pct; 

dictionary.tables 논리 관찰 (NLOBS)의 수를 포함하여, 그것에 PROC 목차 정보를 모두 사용할 수 있습니다. 이 수치는 SQL에서 관측치를 삭제하는 것과 같이 데이터 세트를 수행하는 경우 100 % 보장되는 것은 아니지만 SAS 데이터 세트의 경우 거의 항상 정확하거나 충분히 근접합니다. RDBMS 테이블의 경우이 값은 정의되지 않았거나 정확하지 않을 수 있습니다.

관련 문제