从SAS中的多个数据集中获得的观察数和减去的观察总数

问题描述 投票:0回答:1

我必须在特定条件下从大型数据集中准备5张表格。5个表的obs总数为1000。我已经准备好了前四张桌子。对于第五张表,我很难选择obs(1000减去和(表1至4))。

我可以手动对odsnumber求和,但是由于必须定期执行,因此会影响效率。谁能指导我如何改善这些脚本?

Proc sql;
select nobs
into: odsnumber trimmed
from sashelp.vtable
where libname='work' and memname in ('table1' 'table2' 'table3' 'table4')
;quit;

data table5;
set source;
if 1<=_N_<=sum(1000,manual calculation of nobs from 4 tables);
run;
sas sum proc-sql
1个回答
0
投票

计算SQL中四个NOBS的总和,您将不必手动计算它。

在SQL中,我更喜欢使用DICTIONARY表而不是SASHELP.V*视图。需要从DATAPROC步骤访问元数据时,请使用视图。

从元数据字典表中查询时,

libnamememname值始终为大写。

示例:

data table1; do row = 1 to 10; output; end;
data table2; do row = 1 to 100; output; end;
data table3; do row = 1 to 100; output; end;
data table4; do row = 1 to 40 ; output; end;
data source; do row = 1 to 2500; output; end;

proc sql NOPRINT;
  select SUM(nobs) 
  into: NOBS_OF_4_TABLES trimmed
  from DICTIONARY.TABLES
  where libname='WORK' 
    and memname in ('TABLE1' 'TABLE2' 'TABLE3' 'TABLE4')
;

%put NOTE: &=NOBS_OF_4_TABLES;  %* Check log to see value computed;

data table5;
  set source;
  if _N_ > 1000 - &NOBS_OF_4_TABLES then stop;
run;
© www.soinside.com 2019 - 2024. All rights reserved.